我正在使用Laravel 4.1和工匠工具为我们的网站开发一些cli脚本。 这些脚本将通过cron作业在后台运行。
我遇到了一个错误/功能,并想知道是否有其他人遇到过这个问题或者知道如何解决这个问题。
说明
在artisan.php下的开始文件夹中,我添加了我的命令:
Artisan::add(new VinCommand);
Artisan::add(new DealersCommand);
Artisan::add(new ReportingCommand);
Artisan::add(new AutoInventoryCommand);
Artisan::add(new VastLeadsCommand);
Artisan::add(new SendInventoryAlertsCommand);
Artisan::add(new JumpstartCapCommand);
在app下 - >命令我拥有所有命令。 在AutoInventoryCommand.php中,我在__construct方法中运行truncate table,但我发现每个cli命令都会调用truncate。
例如VinCommand:
php artisan command:vin_command
还运行AutoInventoryCommands __construct方法,这会导致表始终被截断。
通常不知道在__construct方法中放置任何逻辑吗?
在其他一些命令中,我在__contruct方法中设置了私有静态变量。这是不好的做法。我应该有一个被调用的_init()方法:
public function fire()
{
$this->_init();
}
这将设置我的变量。如果我没有:
,我绝不会抓住这个echo "Table Truncated \n";
截断方法中的。
这是一个错误/常识
我认为这种情况正在发生,因为在:
时会调用所有__constructsArtisan::add();
被称为?
答案 0 :(得分:0)
当然它是在每个命令上运行的。您的代码中有new AutoInventoryCommand
!
如果您坚持将代码保留在构造函数中(您不应该这样做),则可以使用resolve
注册命令:
Artisan::resolve('AutoInventoryCommand');