laravel在使用php artisan时从自定义存根创建模型

4gi*_*ivN 7 model stub laravel artisan

当我使用时php artisan make:model CustomNamespace\TestModel,我得到一个基于默认存根的模型,如下所示:

namespace App\Models\CustomNamespace;
use Illuminate\Database\Eloquent\Model;
class TestModel extends Model
{
    //
}
Run Code Online (Sandbox Code Playgroud)

但我想要创建的是一个基于我自己的存根的动态模型来获得这样的东西:

namespace App\Models\CustomNamespace;

use App\Models\MyParent;
/**
 * Put a dynamic doc here
 */
class MyModel extends MyParent
{
    /*put custom methods here*/
}
Run Code Online (Sandbox Code Playgroud)

我检查过Laravel文档和其他tutos,但没有关于此,你能帮助一下吗?

Ale*_*nin 8

创建一个新命令,扩展Illuminate\Foundation\Console\ModelMakeCommand该类并覆盖该getStub()方法:

protected function getStub()
{
    if ($this->option('pivot')) {
        return __DIR__.'/stubs/pivot.model.stub';
    }

    return storage_path('/stubs/my-own-model.stub');
}
Run Code Online (Sandbox Code Playgroud)


pis*_*tor 5

从 Laravel 7 开始,您可以通过运行以下命令来应用存根定制

php artisan stub:publish
Run Code Online (Sandbox Code Playgroud)

此命令将发布被用于所有存根文件artisan make中的命令stubs应用程序的根目录,并给您根据项目的需要改变它们的能力。

其中之一是stubs/model.stub

<?php

namespace {{ namespace }};

use Illuminate\Database\Eloquent\Model;

class {{ class }} extends Model
{
    //
}
Run Code Online (Sandbox Code Playgroud)

将其更改为:

<?php

namespace {{ namespace }};

use App\Models\MyParent;

/**
 * Put your documentation here
 */
class {{ class }} extends MyParent
{
    /* Put your custom methods here */
}
Run Code Online (Sandbox Code Playgroud)

您可以在这篇博文中阅读更多关于存根自定义的信息