Estoy usando Eloquent ORM laravel 5.1, quiero devolver una matriz de identificadores mayores que 0, Mi modelo llamado test.
Yo he tratado :
$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
Vuelve:
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
Pero quiero que el resultado esté en una matriz simple como:
Array ( 1,2 )

toArray()debería devolver una matriz como[12,14]De una
Collection, otra forma en la que podrías hacerlo sería:$collection->pluck('id')->toArray()Esto devolverá una matriz indexada, perfectamente utilizable por laravel en una
whereIn()consulta, por ejemplo.fuente
\YourModel::all(['id'])...->pluck...(al especificar solo la columna de ID, no carga todos los datos en el modelo)La respuesta correcta es el método
lists, es muy simple así:$test=test::select('id')->where('id' ,'>' ,0)->lists('id');¡Saludos!
fuente
Puede usar el
all()método en lugar deltoArray()método (ver más: documentación de laravel ):test::where('id' ,'>' ,0)->pluck('id')->all(); //returns arraySi necesita un
string, puede usar sintoArray()adjunto:test::where('id' ,'>' ,0)->pluck('id'); //returns stringfuente
leer sobre el método lists ()
$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()fuente
Solo una información adicional, si está utilizando
DB:DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();Y si usa el modelo Eloquent:
test::where('id', '>', 0)->lists('id')->toArray();fuente
Aunque ha marcado la Respuesta, este es un enfoque mucho más simple
App\User::pluck('id')->toArray()fuente
También puede usar el método all () para obtener una matriz de atributos seleccionados.
$test=test::select('id')->where('id' ,'>' ,0)->all();Saludos
fuente