Laravel Echo事件中未定义的急切加载模型

时间:2017-01-28 21:57:22

标签: laravel eloquent laravel-echo

我使用Laravel Echo将事件从服务器广播到客户端。

该应用程序是一个论坛,用户可以在其中创建主题帖子。

以下是创建新帖子并调度事件的受控方法代码。

$post = Post::create([
  'user_id' => 1,
  'topic_id' => request('topic_id'),
  'body' => request('body'),
]);

// Fetch the post we've just created, with the relationships this time
$post = Post::with('user', 'topic')->find($post->id);

// Broadcast the event
event(new PostCreated($post));

这是事件类:

class PostCreated implements ShouldBroadcast
{
  public $post;

  public function __construct(Post $post)
  {
    $this->post = $post;
  }

  public function broadcastOn()
  {
    return new Channel('topics.' . $this->post->topic_id);
  }
}

最后,这里是事件在前端截获的地方:

Echo.channel('topics.' + this.topic.id)
  .listen('PostCreated', (e) => {
    this.posts.push(e.post);
  });

问题是,我似乎无法从前端的user方法访问listen()属性。

console.log(e.post.user) // Undefined

如果我发帖console.log(),我可以看到Post(user_id,topic_id,body,created_at,updated_at)的属性,但它没有显示{{在事件发送之前,在控制器中急切加载的1}}或user属性。

可以从事件类本身访问属性

topic

...但是在广播事件时不会以某种方式发送到前端。

如何确保// In the __construct() method of the PostCreated event echo $this->post->user->name; // Works, the name is echo'd user属性与帖子本身一起发送到客户端?

0 个答案:

没有答案