如何指示 artisan 将模型保存到特定目录?
How do I instruct artisan to save model to specific directory?
我正在使用 Laravel 5。我在 /App
目录下创建了一个 /Models
目录,但是当使用 Artisan 生成模型时,它会将它们存储在 App
目录下。
我搜索了文档,试图找到如何指定不同的路径名,但无济于事:
php artisan make:model TestModel
如何指示 artisan
将模型保存到特定目录?
如果要在生成模型时指定路径,可以使用Laravel Generators Package。然后,您可以使用 --path
选项指定位置,如下所示:
php artisan generate:model TestModel --path=my/custom/location
创建一个 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
对于那些使用 Laravel >= 5.2
可以通过 "escaping" FQN 中的反斜杠使用内置的 Artisan 生成器在子目录中生成模型,如下所示:
Laravel 5.2
php artisan model:make App\Models\Foo
Laravel 5.3
php artisan make:model App\Models\Foo
(@Khaled Rahman指出了5.2和5.3的区别,谢谢!)
上面的命令将在 app/Models 目录中创建 Foo.php
文件并相应地更新命名空间。
希望对您有所帮助。
在Laravel 5.4或以后
您可以创建如下
> php artisan make:model "Models\userModel"
这里Models是目录名,userModel是模型名
Use " (double quotes) or ' (single quotes) to create model
控制器路径(ApI/Admin)
模型路径(Model/Admin)
php artisan make:controller API/Admin/PlanController --model=Model/Admin/Plan --resource
这适用于实际 Laravel 版本 5.6.28
,在 Windows 7
php artisan make:model App\Models\NewModel
Note: Do not use double escapes ('\'
)
生成文件App\Models\NewModel.php
如下
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NewModel extends Model
{
//
}
你可以简单地使用这个(对于 Laravel 5.3+):
php artisan make:model your_path/model_name
如果您不指定路径,它将使用 'app' 主文件夹作为根目录。所以你可以从那里导航。
Models/Folder1/MyModel 表示 app->Models->Folder1->MyModel.php
您可以使用此控制台覆盖默认的 Laravel 命令 class
<?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
你的class将被放在
App\Models\Example.php
编辑:Laravel 8 原生支持此功能。我从某处复制了这段代码,只是记不起来源。
在Laravel 8+中使用默认的模型目录,可以像下面这样实现。
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 {
...
}
}
如果未定义,请在 composer.json
文件中添加此行。
"autoload": {
"psr-4": {
"App\": "app/",
//...
}
然后在你的终端做;
php artisan make:model Models/your_path/model_name
我正在使用 Laravel 5。我在 /App
目录下创建了一个 /Models
目录,但是当使用 Artisan 生成模型时,它会将它们存储在 App
目录下。
我搜索了文档,试图找到如何指定不同的路径名,但无济于事:
php artisan make:model TestModel
如何指示 artisan
将模型保存到特定目录?
如果要在生成模型时指定路径,可以使用Laravel Generators Package。然后,您可以使用 --path
选项指定位置,如下所示:
php artisan generate:model TestModel --path=my/custom/location
创建一个 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
对于那些使用 Laravel >= 5.2
可以通过 "escaping" FQN 中的反斜杠使用内置的 Artisan 生成器在子目录中生成模型,如下所示:
Laravel 5.2
php artisan model:make App\Models\Foo
Laravel 5.3
php artisan make:model App\Models\Foo
(@Khaled Rahman指出了5.2和5.3的区别,谢谢!)
上面的命令将在 app/Models 目录中创建 Foo.php
文件并相应地更新命名空间。
希望对您有所帮助。
在Laravel 5.4或以后
您可以创建如下
> php artisan make:model "Models\userModel"
这里Models是目录名,userModel是模型名
Use " (double quotes) or ' (single quotes) to create model
控制器路径(ApI/Admin)
模型路径(Model/Admin)
php artisan make:controller API/Admin/PlanController --model=Model/Admin/Plan --resource
这适用于实际 Laravel 版本 5.6.28
,在 Windows 7
php artisan make:model App\Models\NewModel
Note: Do not use double escapes (
'\'
)
生成文件App\Models\NewModel.php
如下
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NewModel extends Model
{
//
}
你可以简单地使用这个(对于 Laravel 5.3+):
php artisan make:model your_path/model_name
如果您不指定路径,它将使用 'app' 主文件夹作为根目录。所以你可以从那里导航。
Models/Folder1/MyModel 表示 app->Models->Folder1->MyModel.php
您可以使用此控制台覆盖默认的 Laravel 命令 class
<?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
你的class将被放在
App\Models\Example.php
编辑:Laravel 8 原生支持此功能。我从某处复制了这段代码,只是记不起来源。
在Laravel 8+中使用默认的模型目录,可以像下面这样实现。
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 {
...
}
}
如果未定义,请在 composer.json
文件中添加此行。
"autoload": {
"psr-4": {
"App\": "app/",
//...
}
然后在你的终端做;
php artisan make:model Models/your_path/model_name