如何指示工匠将模型保存到特定目录?

时间:2015-01-29 21:42:11

标签: php laravel laravel-5

我正在使用Laravel 5.我在/Models目录下创建了一个/App目录,但在使用Artisan生成模型时,它将它们存储在App目录下。

我搜索了文档,试图找到如何指定不同的路径名,但无济于事:

php artisan make:model TestModel

如何指示artisan将模型保存到特定目录?

9 个答案:

答案 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)

对于那些使用Laravel> = 5.2

的人

通过“转义”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文件并相应地更新命名空间。

希望有所帮助。

答案 2 :(得分:17)

在Laravel 5.4或更高版本中

您可以创建如下

 > 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 {
        ...
    }
}