2016-06-17 1 views

답변

2

당신의 toArray()을하기 전에 대신 배열의 배열 전화 : pluck('number') :

$result = Number::limit('1000')->get(['number'])->pluck('number')->toArray(); 

그게 전부 야! 결과 집합에서 number 속성 만 추출하고 단일 레벨 배열을 제공합니다. 웅변에 의해 반환

모든 다중 결과 세트 \ 웅변 \ 컬렉션 개체입니다를 분명히 \ 데이터베이스의 인스턴스입니다 : 당신이 get()에서 다시 컬렉션을 받고 있기 때문에


이 작동하는 이유입니다 get 메소드를 통해 검색되거나 관계를 통해 액세스되는 결과 포함.

그리고 pluck 방법 :

https://laravel.com/docs/5.1/collections#method-pluck


업데이트

또, 코멘트에 @wunch에서 제공하는 더 간결한 방법 :

$result = Number::limit('1000')->lists('number')->toArray(); 
+0

유망 해 보였지만 제대로 작동하지 않았습니다. 배열 결과에서 여전히 동일한 배열입니다. – Jonuux

+0

이제이 방법으로 작동합니다 : '$ result = Number ('1000') -> get ([ 'number']) -> toArray(); $ results = collect ($ result) -> flatten(); 하지만이 코드가 아님 : '$ result = Number :: limit ('1000') -> get ([ 'number']) -> flatten() -> toArray(); dd ($ result); ' – Jonuux

+0

내 답변이 업데이트되었습니다. 배열로 변환하는 대신 콜렉션으로 돌아가서 다시 배열 ...을 사용하십시오. 이전의 솔루션 ('flatten')은 일반적인 콜렉션과 잘 작동하지만, 객체의 Eloquent 콜렉션에서 실패했다는 것에 동의합니다. 로컬에서 테스트하고 Eloquent 컬렉션에서 작품을 뽑습니다. – jszobody