Eloquent

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 = App\User::first();
$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 = App\User::first();
$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:

$user->getChanges()//[ "name" => "Xavi"] 

 

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:

class User extends Model
{
     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:

class User extends Model
{
    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 = App\User::first();
$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 = App\User::first();
$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:

$user = App\User::find(1);
$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:

$user = App\User::find(1);
$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::find(1, ['name', 'age']);
$user = App\User::findOrFail(1, ['name', 'age']);
Twitter
Visit Us
Follow Me
LinkedIn
Share