domingo, 17 de septiembre de 2017

updateOrCreate (Laravel Eloquent)

En los meses que llevo usando Laravel, me he ido maravillando a cada momento con cada pequeño descubrimiento, especialmente para funciones habituales que estaba acostumbrado a que en PHP requiriesen varias líneas rudimentarias.
Si hay una función de Eloquent que recuerdo con cariño, es updateOrCreate.

Más me sorprende que sobre ella exista tan poca documentación. Oficialmente lo único que hay se encuentra en la documentación de API. Y la verdad: la miro, y apenas la entiendo. Pero como ya la he usado un par de veces, a ver si lo sé explicar bien.


Model::updateOrCreate(
            ['name' => $request->name, 'group' => $
request->group],
            ['name' => $
request->name, 'group' => $request->group, 'description' => $request->description, 'date' => $request->date]
        );


La función sirve para: buscar si en un modelo existe una entrada bajo un criterio. Este criterio se encuentra en el primer array, que he marcado de color azul.
  • ¿Dicha entrada existe? La actualiza con los valores del segundo array, marcado en naranja.
  • ¿Dicha entrada no existe? La crea desde cero, también con los valores del segundo array.
Todo en una sola orden. :-D

Pero sigue sin quedarme claro si es realmente necesario repetir los valores de criterio en ambos arrays, o no. Ni siquiera la documentación de la última versión me lo deja claro. Pero bueno, yo los meto por si acaso.

No hay comentarios:

Publicar un comentario