2015-10-17 8 views
1

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

Как я использую CommandBus в Laravel, я создал слушателя:

Listener - IncidentNotifier.php

<?php 

namespace App\Listeners; 


use App\Events\Incident\IncidentWasPosted; 
use App\Events\EventListener; 
use App\Http\Traits\SearchResponder; 
use App\Jobs\SendAlarmToResponder; 
use Illuminate\Foundation\Bus\DispatchesJobs; 

class IncidentNotifier extends EventListener { 

    use DispatchesJobs, SearchResponder; 

    public function whenIncidentWasPosted(IncidentWasPosted $event) { 
     $responders = $this->getResponderInRange($event); 
     $this->dispatch(new SendAlarmToResponder($responders)); 
    } 
} 

Этот слушатель должен стоять в очереди на работу (пока еще не сделано), чтобы использовать push-уведомление, поскольку это заблокировало бы мою систему в настоящий момент, не используя Queues.

Работа - SendToAlarmResponder.php

<?php 

namespace App\Jobs; 

use App\Jobs\Job; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Bus\SelfHandling; 
use Illuminate\Contracts\Queue\ShouldQueue; 

class SendAlarmToResponder extends Job implements SelfHandling, ShouldQueue 
{ 
    use InteractsWithQueue, SerializesModels; 

    protected $responders = array(); 

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

    public function handle($responders) 
    { 
     var_dump($responders); 
    } 
} 

метод searchResponder

public function getResponderInRange($event) { 
    $position[] = array(); 
    $position['latitude'] = $event->incident->latitude; 
    $position['longitude'] = $event->incident->longitude; 

    $queryResult = ResponderHelper::searchResponder($position); 
    return $queryResult; 
} 

Массив ответчики является переменной, я хотел бы перейти к работе, чтобы быть обработаны там позже , Это массив объектов, которые я получил из своей базы данных и хорошо работает. Но я получаю сообщение об ошибке:

ErrorException in SendAlarmToResponder.php line 19: 
Array to string conversion 

Как я могу передать этот массив заданию?

ответ

4

Это

$this->$responders = $responders; 

должно быть:

$this->responders = $responders; 

, без $ знака после ->

+0

Гоша ... Я совершенно не видел этого. Сейчас работает как шарм! Спасибо, u_mulder – sesc360

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