Używam Eloquent ORM laravel 5.1, chcę zwrócić tablicę identyfikatorów większych niż 0, mój model o nazwie test
.
Próbowałem :
$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
Wraca:
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
Ale chcę, aby wynik był w prostej tablicy, takiej jak:
Array ( 1,2 )
toArray()
powinien zwrócić tablicę taką jak[12,14]
Z
Collection
innego sposobu możesz to zrobić:$collection->pluck('id')->toArray()
Zwróci to tablicę indeksowaną, doskonale nadającą się do wykorzystania
whereIn()
na przykład przez laravel w zapytaniu.źródło
\YourModel::all(['id'])
...->pluck...
(podając tylko kolumnę ID, niePrawidłowa odpowiedź to metoda
lists
, jest bardzo prosta:$test=test::select('id')->where('id' ,'>' ,0)->lists('id');
Pozdrowienia!
źródło
Możesz użyć
all()
metody zamiasttoArray()
metody (zobacz więcej: dokumentacja laravel ):test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array
Jeśli potrzebujesz
string
, możesz użyć beztoArray()
załącznika:test::where('id' ,'>' ,0)->pluck('id'); //returns string
źródło
przeczytaj o metodzie list ()
$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
źródło
Tylko dodatkowe informacje, jeśli używasz
DB
:DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();
A jeśli używasz modelu Eloquent:
test::where('id', '>', 0)->lists('id')->toArray();
źródło
Chociaż zaznaczyłeś odpowiedź, jest to znacznie prostsze podejście
App\User::pluck('id')->toArray()
źródło
Możesz także użyć metody all (), aby uzyskać tablicę wybranych atrybutów.
$test=test::select('id')->where('id' ,'>' ,0)->all();
pozdrowienia
źródło