Laravel事件不会向Pusher发送正确的数据

时间:2018-02-09 10:35:25

标签: laravel events eloquent broadcast pusher

我有一个logController,其show()方法。在我的show()方法中,我返回从数据库中检索的单个数据。



$report = Log::select('logs.id')
  ->where('logs.id', '=', '1')
  ->get();
// event(new NewLog($report));
return $report;




在这种情况下,返回值为1。我也期待将数据发送到Pusher将与查询结果相同。但是发送给Pusher的数据是id, user_id,date`等。我只想发送我提取的单个数据,即logs.id。

这是我的NewLog活动:



class NewLog implements ShouldBroadcast
{
    public $log;

    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($log)
    {
        $this->log = $log;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('logs');
    }
}




1 个答案:

答案 0 :(得分:1)

你可以直接在Log上使用find()静态函数。 return $ report会给你object.if你想访问该对象的属性使用$ report-> property_name;

尝试使用以下代码:

$report = Log::find(1);
$event = event(new NewLog($report->id));
return $report->id;

OR

$report = Log::select('logs.id')
  ->where('logs.id', '=', '1')
  ->get();
// event(new NewLog($report->id));
return $report;