Laravel es un framework que ofrece una amplia gama de funcionalidades. Sin embargo, no todas estas funciones están detalladas en la documentación oficial. A continuación, os enseñamos algunas características que seguramente desconozcas de Eloquent.
Obtener atributos originales en Eloquent
Después de modificar un registro Eloquent, puedes obtener los atributos originales llamando a getOriginal().
Ejemplo:
$user->name; //Xavi
$user->name = "Marc"; //Marc
$user->getOriginal('name'); //Xavi
$user->getOriginal(); //El modelo usuario orginal
Comprueba si el modelo ha cambiado
Comprueba si ha habido cambios en el modelo o en el atributo especificado utilizando la función isDirty().
Ejemplo:
$user->isDirty(); //false
$user->name = "Xavi";
$user->isDirty(); //true
Obtén atributos modificados
Recupera atributos modificados de un modelo utilizando el método getChanges().
Ejemplo:
Columna delete_at personalizada
De forma predeterminada, Laravel controla el soft_delete utilizando la columna delete_at. Se puede cambiar esto definiendo explícitamente la propiedad DELETED_AT.
Ejemplo:
{
use SoftDeletes;
/*
* The name of the "deleted at" column.
*/
const DELETED_AT = 'is_deleted';
}
Guardar modelos y relaciones
Puedes guardar un modelo y sus relaciones correspondientes utilizando el método push().
Ejemplo:
{
public function phone()
{
return $this->hasOne('App\Phone');
}
}
$user = User::first();
$user->name = "Xavi";
$user->phone->number = '1234567890';
$user->push();// Con este método actualizas tanto el usuario como el teléfono.
Recargar un modelo nuevo
Vuelve a cargar una instancia de modelo nuevo desde la base de datos usando fresh().
Ejemplo:
$user->name; // Xavi
// el registro de usuario cambia en otra llamada a Berta
$updatedUser = $user->fresh();
$updatedUser->name; // Berta
$user->name; // Xavi
Vuelve a cargar el modelo existente
Puedes volver a cargar un modelo existente con valores nuevos de la base de datos usando refresh().
Ejemplo:
$user->name; // Xavi
// el registro de usuario cambia en otra llamada a Berta
$user->refresh();
$user->name; // Berta
Comprueba si dos modelos son iguales
Para comprobar si dos modelos tienen la misma ID y pertenecen a la misma tabla se puede utilizar el método is().
Ejemplo:
$sameUser = App\User::find(1);
$diffUser = App\User::find(2);
$user->is($sameUser); // true
$user->is($diffUser); // false
Clonar un modelo
Con la función replicate() clonaremos un modelo en una nueva instancia inexistente.
Ejemplo:
$newUser = $user->replicate();
$newUser->save();
Especifica atributos en el método find()
Cuando utilizamos los métodos find() o findOrFail(), podemos especificar los atributos para seleccionar como segundo argumento.
Ejemplo:
$user = App\User::findOrFail(1, ['name', 'age']);