No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Introducción a Laravel 6

Curso de Introducción a Laravel 6

Profesor Italo Morales F

Profesor Italo Morales F

Colecciones y serialización de datos

15/37
Recursos

Aportes 25

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para aquello que quieran usar otras alternativas a dd() tambien existe

print_r()
var_dump()

pueden ver una compartiva entre estos métodos en este link.

Diferencia entre find() y only()

El método find() es capaz de buscar recibiendo un id o un modelo

$users = User::all();
$userx = $users->find(1); //instancia de la clase User

$user->find($userx)
// o
$user->find(1);

El método only() solo puede buscar por el id

$users = User::all();

$user->only(1);

En ambos podemos buscar mas de un elemento pasando por parámetro un array

$users = User::all();

$user->find([1, 2, 3]);
$user->only([1, 2, 3]);

Un genio como explica Italomoralesf!! HAGAN MAS VIDEOS CON EL!!! 😃

Excelente lección!!! de parte del profe, solo agregaria para los que no estan tan familiarizados con PHP, recuerda esta clase de tipo collection es una abstracción de eloquent, si bien tambien hereda de la clase Iterable igual que un array en PHP puro por asi decir, tener una abstracción como esta nos permite hacer uso de metodos que nos devuelven datos que pueden ser de mucha ayuda en el desarrollo otra cosa por la que se suele hacer estas abstracciones es para estandarizar los filter y map por ejemplo, ya que en PHP puro existen estas funciones pero el orden de los parametros en ambas cambia por tanto con una abstraccion como las collections de Laravel ganamos mas helpers y tambien una API fluida y estandarizada

DUPLICAR LINEAS
En visual studio code, podemos usar la combinacion de teclado
ALT + SHIFT + UP /ABAJO

¿Cual sería la diferencia entre usar with y load para traer la información que tiene con alguna tabla que tenga relación?
A lo que he visto ambos funcionan igual.

Esa conversion de los datos de la base de datos a json me es muy util al trabajar con Vue.js, los datos del componente se manejan por este formato.

Eso de JSON esta genial

Para poder visualizar los datos con formato JSON, podemos pasar el argumento JSON_PRETTY_PRINT al métódo toJson:

dd($user->toJson(JSON_PRETTY_PRINT));

Podremos verlo de una forma mas legible en el navegador

La serialización es importante para cuando trabaja con Web Services pues usualmente se deben retornar los datos en formato JSON y recibir los datos como arrays:D

tomando en cuenta que las colecciones son como una extension para usar métodos o funcionalidad extra, cual es la diferencia entre usar estas métodos o usar directamente el where con eloquent?

Metodos disponibles en las colecciones

Elloquent instancia la clase collections.
.

  • Las collecciones nos devuelven un conjunto de datos, en este caso un arreglo que contiene objetos. Y cada objeto representa un registro de la base de datos.
    .
    Elloquent (collections) >–contiene–> array of objects
    .

Ejemplo: esta coleccion contiene al creador de laravel, a su esposa y al lamborgini:

.

$collection = collect(['taylor', 'abigail', 'facade', null])->map(function ($name) {
    return strtoupper($name);
})->reject(function ($name) {
    return empty($name);
});
  • Serializacion es retornar las colecciones en formato Array o en formato Json
    .

Ejemplo: esta coleccion contiene al creador de laravel, a su esposa y al lamborgini:

.

$collection->all();

Esto me recuerda a la hermosa herramienta LINQ de .NET


Route::get('collections', function () {
    $users = User::get();

    //dd($users);
    //dd($users->contains('4'));
    //dd($users->except([1,2,3]));
    //dd($users->only(4));
    //dd($users->find(4)); //Busca solamente el id 4
    //dd($users->load('posts'));//Cargar la relación con post definida en el modelo
});

Gracias

Excelente el uso de load() para poder cargar las relaciones en la lógica y no solamente en la vista

Genial la serialización en JSON

Colecciones es trabajar con diferentes métodos para poder manipular los datos.

Serialización es la forma de almacenar los datos en un array o en JSON.

Colecciones:
Forma de trabajar con muchos métodos para poder manipular fácilmente nuestros datos.

Route::get('collections', function () {
    $users = User::all();

    /* 
        contains() -> determine if a key exist in the collection
        except()-> Return all models in the collection except the model with especified key
        only()-> Returns only the models from the collection with the specified keys
        load()-> Load a set of relationships onto the collection.
    */

    // dd($users);
    // dd($users->contains(4));
    // dd($users->except(4));
    // dd($users->only(1));
    dd($users->load('posts'));
});

Documentación:
https://laravel.com/docs/7.x/collections#available-methods

Serialización:
Manera de convertir los datos en un Array o un Json.

Route::get('serialization', function () {
    $users = User::all();

    /* 
        toArray()->Get the collection of items as a plain array.
        toJson()->Convert the model instance to JSON.
    */

    // dd($users->toArray());
    $user = $users->find(1);
    // dd($user);
    dd($user->toJson());
});

Documentación:
https://laravel.com/docs/7.x/eloquent-serialization#serializing-models-and-collections

Imprimir User y sus Posts

Route::get('collections', function () {
    $users = User::all();

  foreach ($users as $user) {
    echo "<strong>$user->name</strong> <br>";
    foreach ($user->posts as $post) {
      echo "$post->title <br>";
    }
  }
});

  • Las colecciones son una extenciones de eloquent que permite maniputar facilmente los datos

  • Y la serialización es la forma como presentamos estos datos, en array o en json por ejemplo.

Gran forma de explicar del profesor realmente es muy claro.