将数组传递给命令总线

时间:2016-02-08 03:55:29

标签: laravel laravel-5

我试图了解如何使用laravel 5.0命令总线,但我正在努力使其正确,所以我正在寻找几个问题的帮助:

我想调度一个memberIds数组来运行命令句柄函数内的循环。

$ members:

array:2 [
0 => "147"
1 => "148"
 ]

此数组的发送方式如下:

$this->dispatch(new SendMail($members));

如何在SendMail命令的handle方法中访问数组?我还没有找到很多例子,但几乎所有的例子都将$命令传递给处理程序。

public function handle($command)
{
  //this doesn't work
  foreach($command->members as $memberId){
   $contractor = Contractor::find($memberId);

}

我是否需要从处理程序返回任何内容才能继续运行原始函数中的其他逻辑?

1 个答案:

答案 0 :(得分:1)

由于您尝试将$members数组注入作业的构造函数方法,因此需要在那里处理它。

然后你就可以在hanle方法中使用你的数组了。

// in your job class

protected $members;

public function __construct($members)
{
    $this->members = $members
}

public function handle ()
{
     foreach ($this->members as $member) {
         //your logic
     }
}

如果你想为你的作业(而不是数组)注入一个Eloquent模型,请记住你可以在构造函数中直接输入提示,并使用SerializesModels特征Laravel将为你检索它。这在documentation

中有所描述