如何在October CMS中使用模型工厂?

时间:2019-09-13 16:17:55

标签: octobercms octobercms-plugins

这主要是为了在测试期间设置数据;看来,文档中没有正式的方法可以使工厂像在基本的Laravel框架中一样工作。我该如何实例化它们,以便例如可以在运行测试之前实例化一组模型?

2 个答案:

答案 0 :(得分:1)

在基本测试文件中的setUp方法中(如果需要在测试之外访问它们,则在ServiceProvider中)中,您需要将Eloquent Factory作为单例附加到容器,该容器将Faker Generator并将工厂目录的路径作为参数。

$this->app->singleton(Illuminate\Database\Eloquent\Factory::class, function($app) {
    $faker = $app->make(Faker\Generator::class);
    return Illuminate\Database\Eloquent\Factory::construct($faker, __DIR__.('/../path/to/factories/dir'));
});

答案 1 :(得分:0)

这也是在插件中添加工厂的代码段: https://octoberduck.com/ru/article/factories-in-a-plugin

将此代码放在您的Plugin.php中:

use Illuminate\Database\Eloquent\Factory as EloquentFactory;

public function register()
{
    app(EloquentFactory::class)->load(plugins_path('author/plugin/factories'));
}