Definiendo modelo en Laravel 5

A parte de poder crearlo desde la consola con artisan:

$ php artisan make:model Modelo --migration

Luego tendremos que personalizarlo y para ello tenemos los siguientes parámetros obligatorios:

  protected $table = 'tabla_en_la_base_de_:datos';
  protected $fillable = ['campo1', 'campo2', 'campo3', 'campo4'];

Pero podremos definir unos cuantos más como por ejemplo para indicar que la tabla no va a usar los campos created_at y updated_at

public $timestamps = false;

O si la tabla no va a tener una clave primaria incremental:

public $incrementing = false;

También podemos indicar el nombre la clave primaría en el caso que no sea la que se usa por defecto (id), en este caso para una tabla con varios campos formando la clave primaria:

protected $primaryKey = ['campo_id1', ' campo_id2'];

En caso de querer ocultar algún campo cuando devolvemos la información por JSON de un modelo:

protected $hidden = ['campo_1', 'campo_2'];

En ocasiones querremos usar el campo created_at pero no necesitaremos updated_at, para ello podremos deshabilitarlo añadiendo la función:

public function setUpdatedAtAttribute($value)
{
}

O querremos usar un filtro específico sobre un modelo sin necesidad de hacer una consulta en la base de datos:

public function scopeEstado($query, $estado)
{
      return $query->where('estado', $estado);
}

Y podríamos usarlo de la siguiente forma:

$objeto->estado(‘activo’);

Esto sería lo mismo que aplicar un where pero se suele usar para no tener que meter llamadas a campos en el controlador:

$objeto->where(‘estado’, ‘activo’);

O si la consulta por la que se va a filtrar es algo más compleja (en este caso si filtramos por dos estados):

public function scopeInformes($query)
{
    return $query->where(function($query) {
       return $query->where('estado', 'En curso')
                    ->orWhere('estado', 'Finalizado');
    });
}
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.