Eloquent는 하나의 열만 배열로 가져옵니다.


84

eloquent를 사용하여 laravel 5.2에서 하나의 차원 배열로 하나의 열만 얻는 방법은 무엇입니까?

나는 시도했다 :

$array = Word_relation::select('word_two')->where('word_one', $word_id)->get()->toArray();

그러나 이것은 다음과 같은 2 차원 배열로 제공합니다.

array(2) {
      [0]=>
      array(1) {
        ["word_one"]=>
        int(2)
      }
      [1]=>
      array(1) {
        ["word_one"]=>
        int(3)
      }
    }

하지만 다음과 같이 얻고 싶습니다.

array(2) {
    [0]=>2
    [1]=>3
}

답변:


181

다음 pluck방법을 사용할 수 있습니다 .

Word_relation::where('word_one', $word_id)->pluck('word_two')->toArray();

컬렉션과 함께 사용할 수있는 메서드에 대한 자세한 내용은 Laravel 문서를 참조하십시오 .


고마워요, 그것은 내가 어딘가에서 보았지만 더 이상 찾지 못했습니다. 또한 기록을 위해 대답이 presice가 될 수 있습니다. 그런 다음 순간에 colletion을 반환하고 select를 생략 할 수 있기 때문에-> toArray ()를 추가 할 수 있습니다 laravel 5.2에 대한 쿼리에서 적어도.
Riiwo

select중복 에 대해서는 사실 이지만, 컬렉션은 배열과 동일하게 반복 될 수 있는 멋진 배열 일 뿐이므로 결과적으로 컬렉션을 갖는 데 문제가 없다고 생각합니다 . 메모리 풋 프린트는 일반적으로 문제가되지 않기 때문에 컬렉션 대신 배열을 거의 사용하지 않으며, 컬렉션은 toArray메서드 를 구현하기 때문에 필요할 때 배열로 쉽게 캐스팅 할 수 있습니다 . 그러나 귀하의 질문과 일관성을 위해 결과를 변환하도록 답변을 수정했습니다.
Bogdan

현재 나는 laravel과 웅변에 아주 익숙하기 때문에 나중에 비슷한 배열과 병합하고 다른 쿼리에서 사용하기 위해 숫자 배열로 필요했습니다
Riiwo

공유 해주셔서 감사합니다!
Bhargav Nanekalva

3
a Collection에도 pluck()방법 이 있지만 -사용중인 것은 QueryBuilder.
Paul Spiegel

12

여러 항목을받은 경우 올바른 방법을 목록 이라고 합니다 .

    Word_relation::select('word_two')->where('word_one', $word_id)->lists('word_one')->toArray();

2
대박! 은 lists()그 자체로 잘 작동합니다. 감사합니다.
moreirapontocom

1
팔! 이것은 완벽하게 작동합니다. 하지만 목록 ()이 배열을 반환하므로 toArray () 함수를 사용할 필요가 없습니다.
Sahan

1
lists()Laravel Ver. 5.2 이상에서는 더 이상 사용되지 않으며 pluck()태그가 지정된 대답이 방법입니다.
Masa Sakano

7

다음과 같이 간단히 수행 할 수 있습니다.

Model::pluck('column')

여기서 model은 모델과 같은 User모델 및 열 이름과 같은 열입니다.id

만약 당신이

User::pluck('id') // [1,2,3, ...]

& 물론 where뽑기 전에 절과 같은 다른 절을 가질 수 있습니다.


5

나는이 질문을 보았고 웅변 빌더 객체의 list () 메소드가 Laravel 5.2에서 감가 상각되었고 pluck ()으로 대체되었음을 명확히 할 것이라고 생각했습니다.

// <= Laravel 5.1
Word_relation::where('word_one', $word_id)->lists('word_one')->toArray();
// >= Laravel 5.2
Word_relation::where('word_one', $word_id)->pluck('word_one')->toArray();

이러한 메서드는 예를 들어 컬렉션에서 호출 할 수도 있습니다.

// <= Laravel 5.1
  $collection = Word_relation::where('word_one', $word_id)->get();
  $array = $collection->lists('word_one');

// >= Laravel 5.2
  $collection = Word_relation::where('word_one', $word_id)->get();
  $array = $collection->pluck('word_one');

-3

아래 코드를 사용하여 얻을 수 있다고 생각합니다.

Model::get(['ColumnName'])->toArray();


설명해 주시겠습니까?
J ... S

1
내가 아는 한 수행 Model::get(['ColumnName'])->toArray();Model::select('ColumnName')->get()->toArray()다차원 배열 을 만드는 것과 동일 합니다.
SamBremner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.