Laravel 5 Modelos Carpeta


Tengo un directorio llamado models dentro de app/ donde coloco todas mis clases modelo. Ahora quiero cambiar el directorio donde el siguiente comando genera las clases generadas

php artisan make:model SomeModel
Author: Alan, 2015-04-17

3 answers

No puedes y, si estás siguiendo la versión del universo de Laravel, no deberías. Laravel 5 proporciona, y asume, una convención de nomenclatura PSR-4 para todos sus archivos de clase. Esto significa que los modelos (y todas las clases) deben colocarse en función de su nombre completo de clase.

Cuando dices

php artisan make:model SomeModel

En realidad estás creando un modelo con el nombre completo de App\SomeModel, por lo que artisan crea el siguiente archivo.

app/SomeModel.php

Si usted dijo

php artisan make:model 'Test\SomeModel'

Usted estaría creando un modelo con el nombre completo App\Test\SomeModel, y Laravel crearía el siguiente archivo

app/Test/SomeModel.php

Entonces, es el nombre de clase completo de su modelo (incluido el espacio de nombres) el que determina dónde está el archivo de definición de clase.

 44
Author: Alan Storm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-16 23:21:55

Encontré que debería ser:

php artisan make:model ModelFolder\\SomeModel
 9
Author: Travis Yang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-02 05:14:51

Si desea crear modelos manualmente en una carpeta específica. Ejemplo si desea crear el modelo info en la carpeta Models. Cree un archivo llamado info.php dentro de los modelos de carpetas que creó anteriormente. Aquí está usted debe escribir código como este en info.php

<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Info extends Model
{
    // your code
    protected $table = 'tb_users';
}

Por supuesto, también puede usar el comando Artisan php artisan make:model "Models\Info"

Si desea llamar a ese modelo Info crea una vista

<?php
$users = App\Models\Info::all();

foreach ($users as $user) {
    echo $user->name;
}

Mostrará todos los nombres de los usuarios

 0
Author: I Nyoman Indra Darmawan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-17 04:27:57