【发布时间】:2018-12-06 23:56:49
【问题描述】:
我发现使用Artisan::call() 命令进行迁移,然后再次设置种子会导致正确的迁移,但数据库从未设置种子。这可能是一个错误,或者有办法刷新上一个命令。
例如:
Artisan::call('migrate', [
'--database' => 'tenant',
'--path' => 'database/tenantMigrations',
'--force' => true,
]);
然后:
Artisan::call('db:seed', [
'--database' => 'tenant',
'--class' => 'TenantSeeder',
]);
如您所见,我在新创建的租户数据库上运行这些命令来“配置”它。这些命令中的每一个都单独工作,但不能一起工作。
我已尝试查找有关加入这两个命令的更多文档,同时能够指定播种机的类。这可能看起来像:
Artisan::call('migrate', [
'--database' => 'tenant',
'--path' => 'database/tenantMigrations',
'--force' => true,
'--seed' => true,
'--class' => 'TenantSeeder', // this is the only one I can't do, which is critical
]);
我也尝试过像这样运行播种机:
(new \TenantSeeder)->run();
我收到错误:Call to a member function line() on null。
值得注意的是,所有这些都在我本地的 Homestead 环境中正常工作,但在 Forge 管理的 Digital Ocean 服务器上却无法正常工作。
编辑
我当前的解决方案是将我的播种器逻辑放在常规类(不扩展基本播种器类)中,并如上所示调用它们。
【问题讨论】:
标签: laravel laravel-artisan laravel-seeding