Laravel 5将数据从控制器传递到命令

时间:2015-03-31 15:26:00

标签: php laravel-5

我正在尝试将数组从我的控制器传递给我的命令。见下面的代码

Queue::push(new SendReminderPush(),array('data' => $data));

但是当我调用命令时,我总是会遇到异常。

App \ Commands \ SendReminderPush :: handle()

缺少参数1

这是我在命令类中的句柄函数:

public function handle($data){
   foreach($data as $d){
    do something
   }
}

请帮帮我。我做错了什么?

1 个答案:

答案 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