ids collection colecciones array php laravel eloquent

php - collection - Laravel Eloquent: Return Array key como ID de los campos



laravel eloquent get list (4)

Cuando ejecuto una consulta a través del ORM Eloquent de Laravel, quiero obtener el ID de fila como la clave de resultado Array, esto facilitará las cosas cuando quiero verificar algo basado en un ID (usando array_key_exists) o hago algunas búsquedas (si necesita una entrada específica de la matriz de resultados)

¿Hay alguna forma en que pueda decirle a Eloquent que configure la clave de la identificación de los campos? ver imagen http://oi60.tinypic.com/kc02a8.jpg


Como tiene una colección Eloquent (una clase secundaria de la clase genérica Collection ) puede usar el método getDictionary . $collection->getDictionary() le dará una matriz de sus objetos de categoría marcados por sus claves principales.

Si deseaba otra Colección en lugar de una matriz PHP nativa, podría usar $collection->keyBy($property) . Parece que tu clave principal es category_id , así que $collection->keyBy(''category_id'') . Puede usar ese método para convertir cualquier propiedad arbitraria, incluidos los mutadores de obtención que haya escrito.

Si bien getDictionary es exclusivo de la extensión Eloquent Collection , keyBy está disponible para todos los objetos de Laravel Collection . Consulte los documentos API Laravel 4.2 o los documentos API Laravel 5.0 .


Puedes simplemente hacer

Model::all()->keyBy(''category_id'');

Saludos :)


Si necesita la identificación como clave, confíe en la Colección:

$collection = Model::all(); $collection->getDictionary(); // returns: array( 1 => object(Model) ( ... ), 2 => object(Model) ( ... ), ... idN => object(Model) ( ... ) );

De lo contrario, agradable o no, puedes hacer esto:

$keys = $collection->lists(''columnName''); $arrayOfModels = array_combine($keys, $collection->getDictionary);


Tiene una Support/Collection / Database/Eloquent/Collection y puede usar las lists(''id'') métodos lists(''id'') para devolver una matriz del id de cada uno de los modelos de la colección.

Luego use array_combine para mapear las claves de los modelos. El resultado será una matriz con la identificación asignada a su modelo correspondiente.