2016-02-08 6 views
0

Я пытаюсь понять, как использовать команду шины Laravel 5.0, но я изо всех сил, чтобы получить это право, так что я ищу помощь с несколькими вопросами:Pass массив в командной шине

I 'd хотел бы отправить массив memberIds для выполнения цикла внутри функции дескриптора команды.

$ Участники:

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

Этот массив посылается как это:

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

Как получить доступ к массиву в методе ручки команды SendMail? Я не нашел много примеров, но почти все они передают $ command в обработчик.

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

} 

Нужно ли мне возвращать что-либо из обработчика, чтобы продолжить выполнение другой логики внутри моей исходной функции?

ответ

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 
    } 
} 

И если вы хотите, чтобы ввести красноречивую модель для вашей работы (вместо массива) помните, что вы можете typehint directtly в конструкторе и, используя SerializesModels черты Laravel извлечет его для вас. Это описано в documentation.

+0

Спасибо за отличный ответ. Я очень ценю это. – retrograde

+0

Добро пожаловать – shempignon

Смежные вопросы