如何用Artisan命令在指定目录创建Model和Controller
解决Laravel Artisan在指定子目录创建Model和Controller的问题
问题原因
使用php artisan make:model Admin\Services\Post -mc时,-c(--controller)选项默认只会在App/Http/Controllers根目录生成控制器,不会自动跟随模型的子目录结构,所以需要手动指定控制器的目标路径。
解决方法
方法1:在make:model命令中明确指定控制器路径
通过--controller选项直接指定控制器的完整路径(或命名空间),让Artisan生成到目标目录:
# 使用斜杠路径写法(推荐,避免转义) php artisan make:model Admin/Services/Post -m --controller=Admin/Services/PostController # 或者使用命名空间写法(注意反斜杠转义) php artisan make:model Admin\\Services\\Post -m --controller=Admin\\Services\\PostController
执行后,模型会生成在App/Models/Admin/Services/Post.php,控制器会生成在App/Http/Controllers/Admin/Services/PostController.php,同时自动关联模型。
方法2:分开创建模型和控制器
先创建指定目录的模型,再单独创建对应目录的控制器并关联模型:
- 创建模型:
php artisan make:model Admin/Services/Post -m
- 创建关联模型的控制器:
php artisan make:controller Admin/Services/PostController --model=Admin\\Services\\Post
这种方式更灵活,适合需要单独调整模型或控制器配置的场景。
额外说明
- 命令中的路径可以用
/或\,在类Unix终端(Linux/Mac)中,反斜杠需要用\\转义;Windows终端中直接用\即可。 - 生成的文件会自动带上正确的命名空间,比如控制器的命名空间为
App\Http\Controllers\Admin\Services,模型为App\Models\Admin\Services。
内容的提问来源于stack exchange,提问作者nischalinn
相关产品推荐
相关产品推荐

