Primeros Pasos con los Modelos en Laravel
Hola developers, hoy en esta sección vamos a entender que son los modelos como podemos generar un modelo. De forma predeterminada, los modelos se almacenan en el directorio app/Models del proyecto.
Autor: rogercode. Full stack developerLaravel incluye un mapeador relacional de objetos (ORM) llamado Eloquent. Al utilizar Eloquent se debe de crear un Modelo para cada tabla de la base de datos. Esto nos va a permitir interactuar con cada tabla de una forma más agradable.
Requisitos antes de generar un modelo.
Se debe de agregar y configurar una conexión de base de datos en la ruta config/database.php del proyecto.
Actualmente Laravel proporciona soporte para las siguientes bases de datos Maria DB, MySQL, PostgreSQL, SQLite y SQL Server.
Generación de los modelos.
Al ejecutar el siguiente comando desde la terminal o cmd php artisan make:model NombreDeMiModelo se crea en la ruta php artisan make:model NombreDeMiModelo
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NombreDeMiModelo extends Model
{
//
}
Configuración de las tablas.
Por convención, el nombre plural de la clase se utilizará como nombre de la tabla a menos que se especifique explícitamente otro nombre. Se puede especificar manualmente el nombre de la tabla mediante la propiedad $table
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NombreDeMiModelo extends Model
{
protected $table = 'NombreDeLaTabla';
}
Definir la clave primaria de mi tabla. Si la clave primaria de mi tabla es diferente de id. Entonces se puede especificar la clave primaria mediante la propiedad $primaryKey. Tener en cuenta que eloquent asume que la clave principal es un valor entero y autoincremental. Si desea especificar que la clave principal no es autoincremental defina la propiedad $incrementing como false.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NombreDeMiModelo extends Model
{
protected $primaryKey = 'tabla_id';
public $incrementing = false;
}
Si la clave principal no es un numero entero defina la propiedad $keyType y debe de tener un valor de tipo string.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NombreDeMiModelo extends Model
{
protected $keyType = 'string';
}
Al crear una tabla mediante las migraciones por defecto eloquent genera dos columnas en la tabla created_at y updated_at. Por lo que eloquent establecera automáticamente los valores de estas columnas cuando se creen o actualicen los datos de la tabla. Si no desea que Eloquent administre automáticamente estas columnas, debe definir la propiedad $timestamps con un valor false.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NombreDeMiModelo extends Model
{
public $timestamps = false;
}
Los modelos están protegidos contra vulnerabilidades de asignación masiva de forma predeterminada. Por eso debemos de utilizar la propiedad $fillable en la clase del modelo para especificar el nombre de cada columna de nuestra tabla.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NombreDeMiModelo extends Model
{
protected $fillable = [
'nombre',
'usuario',
'contraseña',
'email',
];
}