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

Php Laravel 5将数据从控制器传递到命令,php,laravel-5,Php,Laravel 5,我正在尝试将数组从控制器传递到命令。请参阅下面的代码 Queue::push(new SendReminderPush(),array('data' => $data)); 但是当我调用命令时,我总是得到一个异常 App\Commands\sendRememberPush::handle()缺少参数1 这是命令类中的句柄函数: public function handle($data){ foreach($data as $d){ do something } }

我正在尝试将数组从控制器传递到命令。请参阅下面的代码

Queue::push(new SendReminderPush(),array('data' => $data));
但是当我调用命令时,我总是得到一个异常

App\Commands\sendRememberPush::handle()缺少参数1

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

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

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

在Laravel 5中,这实际上取决于
$data
是什么。如果它是一个数组,并且您想让Laravel自动映射它,您可以执行以下操作:

$this->dispatchFromArray('App\Commands\SendReminderPush', $data);
public function handle(){
   $this->doSomething($this->name);
}
假设您的
$data
看起来也是这样:

$data = array('name' => 'Test', 'email' => 'test@example.com');
然后,在
SendReminderPush
中,您将在构造函数中映射:

public function __construct($name, $email) {
   $this->name = $name;
   $this->email = $email;
}
然后在命令中处理它(如果它是自处理命令),如下所示:

$this->dispatchFromArray('App\Commands\SendReminderPush', $data);
public function handle(){
   $this->doSomething($this->name);
}

我将进一步了解命令总线在Laravel 5中的工作方式。检查它

在实例化时,您传递的数据是否不是类的参数<代码>队列::推送(新的SendReminderPush(['data'=>$data])然后将它们分配给构造函数中的变量?谢谢,这帮了我的忙!谢谢你的回答。我试过这个,但又有一个例外。未定义的属性:App\Commands\sendMemorPush::$device\u token这里是我的构造函数:$device\u construct($device\u token,$message){$this->device\u token=$device\u token;$this->message=$message;}这就是我分派的方式:$this->dispatchFromArray($App\Commands\sendMemorPush',$data);是否可以从handle函数而不是构造函数访问此数据!因为如果handl函数是在构造函数参数中定义的,而类依赖项是在handl函数参数中定义的,那么类看起来会很奇怪!