2017-02-19 4 views
2

BroadcastOn() 함수를 통해 채널 이름에 대한 사용자 ID를 얻어야합니까?Laravel, BroadcastOn() 사용자 ID 가져 오기

난 할 노력하고있어입니다 :

새로운 이벤트 :

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 \ Auth :: user(); 그것은 나에게 null을 제공합니다. 사용자가 인증을 통해 이벤트에서 인식되지 않는다고 가정합니다. 어떻게하면 broadcastOn()에 사용자를 전달하여 채널 이름으로 정의 할 수 있습니까?

+0

당신이 그것을 실행을 사용자 ID를 통과 당신은 아래와 같이 할 수

C에서 ommand line> – sumit

+0

아니요, 컨트롤러에서 실행 중입니다. – EmJeiEn

+0

컨트롤러를 명령 줄에서 실행 하시겠습니까? – sumit

답변

1
당신이 생성자

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

이미 $user이 아니면

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

관련 문제