我正在尝试将数组从我的控制器传递给我的命令。见下面的代码
Queue::push(new SendReminderPush(),array('data' => $data));
但是当我调用命令时,我总是会遇到异常。
App \ Commands \ SendReminderPush :: handle()
缺少参数1这是我在命令类中的句柄函数:
public function handle($data){
foreach($data as $d){
do something
}
}
请帮帮我。我做错了什么?
答案 0 :(得分:4)
在Laravel 5中,这实际上取决于$data
是什么。如果它是一个数组,你想让Laravel自动映射它,你会做这样的事情:
$this->dispatchFromArray('App\Commands\SendReminderPush', $data);
说你的$data
也是这样的:
$data = array('name' => 'Test', 'email' => 'test@example.com');
在SendReminderPush
中,您将在构造函数中映射它:
public function __construct($name, $email) {
$this->name = $name;
$this->email = $email;
}
然后您将在命令中处理它(如果它是自我处理命令),如下所示:
public function handle(){
$this->doSomething($this->name);
}
我会看看命令总线如何在Laravel 5中工作。查看here