我正在使用Laravel 5.我在/Models
目录下创建了一个/App
目录,但在使用Artisan生成模型时,它将它们存储在App
目录下。
我搜索了文档,试图找到如何指定不同的路径名,但无济于事:
php artisan make:model TestModel
如何指示artisan
将模型保存到特定目录?
答案 0 :(得分:97)
创建一个Models目录或您想要命名的目录,将其放在app目录中。目录结构应该看起来像
laravel-project
/app
/Console
/Events
/Exceptions
/Http
/Jobs
/Listeners
/Provider
/Models
然后您只需键入artisan命令即可在Models目录
中创建模型php artisan make:model Models/ModelName
创建模型后,模型类中的命名空间将为
namespace app-name\Models\ModelName
您可以在控制器内部访问此模型
use app-name\Models\ModelName
答案 1 :(得分:20)
通过“转义”FQN中的反斜杠,可以使用内置的Artisan生成器在子目录中生成模型,如下所示:
php artisan model:make App\\Models\\Foo
php artisan make:model App\\Models\\Foo
(@Khaled Rahman指出5.2和5.3之间的差异,谢谢!)
上面的命令会在app / Models目录中创建Foo.php
文件并相应地更新命名空间。
希望有所帮助。
答案 2 :(得分:17)
您可以创建如下
> php artisan make:model "Models\userModel"
此处模型是目录名称, userModel 是型号名称
使用“(双引号)或'(单引号)来创建模型
答案 3 :(得分:7)
如果要在生成模型时指定路径,可以使用Laravel Generators Package。然后,您可以使用--path
选项指定位置,如下所示:
php artisan generate:model TestModel --path=my/custom/location
答案 4 :(得分:4)
您可以使用此控制台类覆盖默认的Laravel命令
<property name="Token" expression="get-property('token')" scope="transport" type="STRING" />
下次创建模型时
<?php namespace App\Console\Commands; use Illuminate\Foundation\Console\ModelMakeCommand; class ModelMake extends ModelMakeCommand { protected function getDefaultNamespace($rootNamespace) { return $rootNamespace.'\\Models'; } }
您的课程将放在
php artisan make:model Example
编辑:Laravel 8本机支持此功能。我从某个地方复制了此代码段,但我不记得要记在哪里。
答案 5 :(得分:1)
您可以简单地使用它(对于Laravel 5.3 +):
php artisan make:model your_path/model_name
如果不指定路径,它将使用主“ app”文件夹作为根目录。因此您可以从那里导航。
Models / Folder1 / MyModel意味着app-> Models-> Folder1-> MyModel.php
答案 6 :(得分:0)
控制器路径(ApI / Admin)
模型路径(Model / Admin)
php artisan make:controller API / Admin / PlanController --model = Model / Admin / Plan --resource
答案 7 :(得分:0)
这适用于Windows 7上的实际Laravel版本5.6.28
php artisan make:model App\Models\NewModel
注意:请勿使用双转义符(
'\\'
)
这将如下生成文件App\Models\NewModel.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NewModel extends Model
{
//
}
答案 8 :(得分:0)
在 Laravel 8+ 中使用默认的 Models 目录可以像下面这样实现。
php artisan make:model App\Modules\ModuleName\Models\ModelName
在目录下生成模型文件
app/Modules/ModuleName/Models/ModelName.php
<?php
namespace App\Modules\ModuleName\Models;
use Illuminate\Database\Eloquent\Model;
class ModelName extends Model {
...
}
}