【问题标题】:Laravel, get User id for BroadcastOn()Laravel,获取 BroadcastOn() 的用户 ID
【发布时间】:2017-07-09 03:10:17
【问题描述】:

我需要通过 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() 以便我可以将其定义为频道名称?

【问题讨论】:

  • 你是从命令行运行的吗>
  • 不,从控制器运行它。
  • 我的意思是,控制器是否从命令行运行?
  • 不,它没有。它在发送消息和在线登录后由用户启动。如果我通过命令行启动它自然无法获得用户:)。

标签: php laravel


【解决方案1】:

你可以像下面那样做,因为你已经在构造函数中有$user

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

或者传递用户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];
    }

【讨论】:

  • 谢谢!工作完美:)。所以我在退货时实际上不需要使用“新频道”吗?它几乎没有记录在案,过去 6 个小时我一直坚持这样做,你让我很开心:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2019-12-28
  • 2022-01-02
  • 2020-02-24
  • 2021-06-30
相关资源
最近更新 更多