[php] Eloquent ORM laravel 5 ID 배열 가져 오기

나는 Eloquent ORM laravel 5.1을 사용하고 있으며, 0보다 큰 ID 배열을 반환하고 싶습니다 test.

나는 시도했다 :

$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();

반환 :

Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )

하지만 결과가 다음과 같은 간단한 배열에 있기를 원합니다.

Array ( 1,2 )



답변

다음을 사용할 수 있습니다 lists().

test::where('id' ,'>' ,0)->lists('id')->toArray();

참고 : 더 나은 당신이 당신의 모델을 정의하는 경우 Studly Case예를 들어, 형식 Test.


다음을 사용할 수도 있습니다 get().

test::where('id' ,'>' ,0)->get('id');

업데이트 : (버전> = 5.2)

그만큼 lists() 메서드는 새 버전에서 더 이상 사용되지 않습니다>= 5.2 . 이제 pluck()대신 메서드를 사용할 수 있습니다 .

test::where('id' ,'>' ,0)->pluck('id')->toArray();

참고 : 예를 들어 블레이드 에서 문자열
이 필요한 경우 과 같이 toArray () 부분 없이 함수를 사용할 수 있습니다 .

test::where('id' ,'>' ,0)->pluck('id');


답변

에서 Collection할 수있는 또 다른 방법은 다음과 같습니다.

$collection->pluck('id')->toArray()

whereIn()예를 들어 laravel이 쿼리 에서 완벽하게 사용할 수있는 인덱스 배열을 반환 합니다.


답변

이에 대한 정답은 방법입니다 lists. 다음과 같이 매우 간단합니다.

$test=test::select('id')->where('id' ,'>' ,0)->lists('id');

문안 인사!


답변

all()method 대신 method를 사용할 수 있습니다 toArray()(더보기 : laravel documentation ) :

test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array

필요한 경우 첨부 파일 string없이 사용할 수 있습니다 toArray().

test::where('id' ,'>' ,0)->pluck('id'); //returns string


답변

목록 () 메서드에 대해 읽어보십시오.

$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()


답변

다음을 사용하는 경우 추가 정보 DB:

DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();

Eloquent 모델을 사용하는 경우 :

test::where('id', '>', 0)->lists('id')->toArray();


답변

답변을 표시했지만 이것은 훨씬 더 간단한 접근 방식입니다.

App\User::pluck('id')->toArray()