我有Post
个show方法,我按他们的id
显示每个帖子,这是这样的:
$post = Post::find($id);
$comments = Comment::where('post_id', '=', $post->id)->get();
return view('single', compact('post','comments'));
有了这个,我基本上可以加载我的帖子详细信息,并foreach发表评论(到目前为止非常好)。
是通过ajax获得我的评论,例如,当user 1
正在阅读该帖子,而其他地方user 2
添加新评论user 1
时,就可以看到它。因此,user 1
无需刷新页面即可查看新评论。
我该怎么做?
答案 0 :(得分:0)
您可以使用Laravel的渠道合并到Redis服务器。每次存储评论时,您都可以将评论推送到发布频道并使用ajax显示(使用laravel echo服务器)。该频道的所有订阅用户将收到新评论。
答案 1 :(得分:0)
这就是我要做的
PHP
Route::get('/posts/{post}/comments', 'PostsController@comments');
public function post(Post $post) {
return response()->json(
Post::with('comments')->get() // Create HasMany relation named "comments", see Eloquent Relationships
);
}
JavaScript
(function($) {
var intervalMiliseconds = 5000;
var pool = function() {
$.ajax({
method: 'GET',
url: '/post/100/comments',
success: function(response) {
console.log(response);
}
});
};
setInterval(pool, intervalMiliseconds);
})(jQuery);
请避免在JavaScript代码中使用PHP代码,只需将所有JS代码移动到*.js
文件中,大多数(如果不是全部)来自PHP的必需数据都通过使用data-*
元素属性来传递