2017-02-19 51 views
2

我需要得到用户的ID为通过BroadcastOn()函数的频道名称?Laravel,获得用户ID BroadcastOn()

我试图做的是:

新事件:

event(new \App\Events\chat($message, $userid, $avatar, $username, $receiver, $msgid)); 

事件本身

public $message; 
    public $user; 
    public $avatar; 
    public $username; 
    public $receiver; 

构建:

public function __construct($message, $user, $avatar,$username,$receiver,$msgid) { 
     $this->message = $message; 
     $this->user = $user; 
     $this->avatar = $avatar; 
     $this->username = $username; 
     $this->receiver = $receiver; 
     $this->msgid = $msgid; 

    } 

广播:

public function broadcastOn() { 
     $user = \Auth::user()->id(); 
     return new Channel($user); 
    } 

如果我尝试DD \验证::用户();它给了我null,我想这是用户无法通过auth在事件中识别。有没有办法通过用户broadcastOn()不知何故,我就可以把它定义为一个频道的名字吗?

+0

上运行它来自c ommand线> – sumit

+0

否,从控制器运行它。 – EmJeiEn

+0

我的意思是说,做从命令行运行控制? – sumit

回答

1

你可以像下面为你构造

public function broadcastOn() { 
{ 
return ['channel_'.$this->user->id]; 
} 

$user已经或者通过用户ID

public function __construct($message, $user, $avatar,$username,$receiver,$msgid,$userid) { 
     $this->message = $message; 
     $this->user = $user; 
     $this->avatar = $avatar; 
     $this->username = $username; 
     $this->receiver = $receiver; 
     $this->msgid = $msgid; 
     $this->userid= $userid; 

    } 

然后

public function broadcastOn() { 
    { 
    return ['channel_'.$this->userid]; 
    } 
+1

谢谢!工作完美:)。所以我在回归时并不需要使用“新频道”?它几乎没有记录在案,我一直坚持过去6个小时与此,你让我的一天:) – EmJeiEn