¿Cómo obtener solo una columna como una matriz dimensional en laravel 5.2 usando elocuente?
Yo he tratado:
$array = Word_relation::select('word_two')->where('word_one', $word_id)->get()->toArray();
pero este lo da como una matriz de 2 dimensiones como:
array(2) {
[0]=>
array(1) {
["word_one"]=>
int(2)
}
[1]=>
array(1) {
["word_one"]=>
int(3)
}
}
pero quiero conseguirlo como:
array(2) {
[0]=>2
[1]=>3
}
laravel
eloquent
laravel-5.2
Riiwo
fuente
fuente
select
es redundante, pero no veo ningún problema en tener una colección como resultado, porque una colección es solo una matriz elegante que se puede iterar sobre lo mismo que una matriz. Rara vez utilizo matrices en lugar de colecciones, ya que la huella de memoria generalmente no es un problema, y las colecciones se pueden convertir fácilmente a matrices donde sea necesario porque implementan eltoArray
método. Sin embargo, para mantener la coherencia con su pregunta, modifiqué la respuesta para convertir el resultado.Collection
también tiene unpluck()
método, lo que está utilizando es un métodoQueryBuilder
.Si recibe varias entradas, el método correcto se llama listas .
Word_relation::select('word_two')->where('word_one', $word_id)->lists('word_one')->toArray();
fuente
lists()
bien funciona por sí solo. Gracias.lists()
está en desuso en Laravel Ver.5.2 y posteriores, dondepluck()
como en la respuesta etiquetada es el camino.Eso se puede hacer en resumen como:
Model::pluck('column')
donde modelo es el modelo como
User
modelo y columna como nombre de columna comoid
si lo haces
User::pluck('id') // [1,2,3, ...]
Y, por supuesto, puede tener cualquier otra cláusula como
where
cláusula antes de arrancarfuente
Me encontré con esta pregunta y pensé que aclararía que el método list () de un objeto constructor elocuente se depreció en Laravel 5.2 y se reemplazó con pluck ().
// <= Laravel 5.1 Word_relation::where('word_one', $word_id)->lists('word_one')->toArray(); // >= Laravel 5.2 Word_relation::where('word_one', $word_id)->pluck('word_one')->toArray();
Estos métodos también se pueden llamar en una colección, por ejemplo
// <= Laravel 5.1 $collection = Word_relation::where('word_one', $word_id)->get(); $array = $collection->lists('word_one'); // >= Laravel 5.2 $collection = Word_relation::where('word_one', $word_id)->get(); $array = $collection->pluck('word_one');
fuente
Creo que puedes lograrlo usando el siguiente código
Model::get(['ColumnName'])->toArray();
fuente
Model::get(['ColumnName'])->toArray();
es equivalente a hacer, loModel::select('ColumnName')->get()->toArray()
que da como resultado una matriz multidimensional.