Laravel如何从Database Seeder调用Console命令

时间:2017-03-14 16:30:51

标签: php laravel

我正在为Laravel实例的数据库编写一些播种器。我正在使用Laravel Scout TNTSearch driver

php artisan tntsearch:import App\\MyModel

我想从播种机中调用此命令。我已经看过了实现,它很复杂,我不想重构,等待合并的pull请求,或者将实现复制并粘贴到我的文件中。

在播种机内我尝试了:

$this->call('tntsearch:import', ['model' => App\User::class]);

但是$this指的是播种者,call方法期待另一个播种者,而不是控制台命令。

我想从播种机内部召唤工匠指令。 这可能吗?

更新

我最终在播种机内做了这个:

exec('php artisan tntsearch:import App\\User');

这有效,但感觉很脏。没有使用exec()还有另一种简单方法吗?

1 个答案:

答案 0 :(得分:9)

您可以使用Artisan facade:

\Artisan::call('tntsearch:import', ['model' => App\User::class]);