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 developer

Laravel 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',
        ];
    }