Eloquent ORM laravel 5 ID 배열 가져 오기


84

나는 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 )

답변:


208

다음을 사용할 수 있습니다 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');

3
pluck ( 'id') 배열은 array ( '0'=> 12, '1'=> 14) 등이며 WhereIn ( 'id', $ array)에서 사용하면 id가 아닌 배열로 선택합니다. 키, 그래서 0.1로 ...
게디 미나스

2
toArray()같은 배열을 반환한다[12,14]
자카 리아 Acharki

1
오 예, 맞습니다. Debugbar ant print_r을 통해 디버깅하고 있었는데 둘 다 키가있는 배열 값을 보여 주었지만 키가 없습니다. 감사합니다!
Gediminas

우리는 한 프로젝트에 대해 4.2를 고수하므로-> lists ( 'id') 참조를 유지해 주셔서 감사합니다. 그것이 배열을 직접 생성했지만-> toArray 할 필요가 없었습니다.
Dustin Graham

18

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

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

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


2
드롭 다운 목록에도 사용됩니다.
Bira

모델에서 수집 할 컬렉션을 가져 오려면 \YourModel::all(['id'])... ->pluck...(ID 열만 지정하면 모델에 모든 데이터를로드하지 않습니다)
jave.web

5

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

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

문안 인사!


다 대다 관계를 통해 배열의 관련 ID 목록을 어떻게 얻습니까 ??
Pathros

아마도 DB 클래스를 사용할 수 있습니다. 예 : DB :: table ( 'name_of_table')-> where ( 'condition')-> lists ( 'id');
Radames E. Hernandez

5

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

4

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

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

블레이드 파일에서 in_array_command를 사용하면이 오류가 표시됩니다. >와 in_array ()가 배열 될 예정 2 파라미터는 지정된 객체
편집증

오 지금은 당신을 얻을, 당신은 toArray (), 목록 () 반환 컬렉션을 호출 할 필요가
아미르 바

0

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

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

Eloquent 모델을 사용하는 경우 :

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

0

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

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

-2

all () 메서드를 사용하여 선택한 속성의 배열을 가져올 수도 있습니다.

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

문안 인사


1
작동하지 않습니다. 그것은 정의되지 않은 메서드를 분명히 \ 데이터베이스 \ 쿼리 \ 빌더 :: 모든 ()에 전화를 말한다
자베르 알 Nahian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.