Blog / Laravel 5 - Añadir un directorio para los modelos
Por defecto, Laravel 5, sitúa los modelos en 'app/'
siendo bastante habitual crear el directorio 'app/Models/'
donde almacenarlos. Esto venía por defecto en la versión 4
del framework y ¡acaba de volver con la 8! hace solo unos días...
Todos los modelos deberán tener el namespace correcto,
tanto los nuevos, como el modelo User
que ya viene en Laravel y que tiene algunas particularidades
siendo el motivo de esta entrada.
¿Cómo creamos los modelos?
Lo habitual es crear las distintas clases de Laravel usando
comandos de artisan. Entre sus
ventajas está el evitarnos problemas con los namespaces.
Ejemplo
Crear un modelo llamado Images
en el directorio donde Laravel guarda los modelos por defecto:
artisan make:model Images
Se crea el modelo en el fichero:
'MiAppLaravel/app/Images.php'.
Para crearlo en el directorio
'MiAppLaravel/app/Models/' el comando será:
artisan make:model Models/Images
Esto crea el modelo limpio en el fichero:
'MiAppLaravel/app/Models/Images.php', con el
namespace apropiado.
Código del nuevo modelo:
<?php
namespace
App\Models;
use
Illuminate\Database\Eloquent\Model;
class Images
extends Model
{
//
}
Adaptando el sistema: el modelo User
El modelo User viene al instalar
Laravel y se usa inicialmente, en la autenticación de usuarios.
Entonces, cuando lo movemos al directorio
'app/Models/' debemos hacer lo siguiente:
1. Cambiar el namespace
El namespace pasara de:
a:
Con esto Laravel encontrara la clase*.
2. Indicar al sistema de autenticación la clase
que se va a usar.
*Aunque la clase se carga, el sistema básico de autenticación
necesita saber qué modelo usar.
Abrir el fichero 'config/auth.php'
y modificar el modelo en uso.
En User Providers
tenemos el bloque:
'providers' => [
'users' => [
'driver'
=> 'eloquent',
'model'
=> App\User::class,
],
Cambiamos:
por:
08-06-2019 (actualizado 12-09-2020)