2015-10-17 104 views
1

我想使用Laravel中的Queue将消息推送到Queue。因此,我想先尝试一下基本流程,此时会出现错误。Laravel中的数组到字符串转换错误

由于我使用Laravel的CommandBus,我创建了一个监听器:

监听器 - 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)); 
    } 
} 

该侦听器应该队列中的作业(尚未完成)使用推送通知服务,因为这会在不使用队列的情况下阻止我的系统。

工作 - 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