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 array
Si necesita un
string
, puede usar sintoArray()
adjunto:test::where('id' ,'>' ,0)->pluck('id'); //returns string
fuente
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