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.