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

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
}



답변

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

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

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


답변

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

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


답변

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

Model::pluck('column')

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

만약 당신이

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

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


답변

나는이 질문을 보았고 웅변 빌더 객체의 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');


답변

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

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


답변