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

时间:2018-01-22 15:22:20

标签: laravel model artisan stub

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

namespace App\Models\CustomNamespace;
use Illuminate\Database\Eloquent\Model;
class TestModel extends Model
{
    //
}

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

namespace App\Models\CustomNamespace;

use App\Models\MyParent;
/**
 * Put a dynamic doc here
 */
class MyModel extends MyParent
{
    /*put custom methods here*/
}

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

2 个答案:

答案 0 :(得分:7)

创建一个新命令,扩展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');
}

答案 1 :(得分:3)

从Laravel 7开始,您可以运行以下命令来应用stub customization

php artisan stub:publish

此命令将在应用程序根目录的artisan make目录中发布用于stubs命令的所有存根文件,并使您能够根据项目的需要对其进行更改。 / p>

其中之一是stubs/model.stub

<?php

namespace {{ namespace }};

use Illuminate\Database\Eloquent\Model;

class {{ class }} extends Model
{
    //
}

将其更改为:

<?php

namespace {{ namespace }};

use App\Models\MyParent;

/**
 * Put your documentation here
 */
class {{ class }} extends MyParent
{
    /* Put your custom methods here */
}

您可以在this blog post中阅读有关存根定制的更多信息。