【发布时间】:2016-06-28 08:24:24
【问题描述】:
我在问题中使用了用户/帖子示例。我有两个表用户和帖子链接在一起,与 post_views 作为表的多对多关系。我还创建了一个事件和侦听器来处理帖子上的视图。但我只想添加一个新的视图条目,如果给定帖子的最后一次视图是该用户一个多小时前的视图。
目前我在UpdatePostViews 监听器中的handle() 方法可以:
public function handle(PostWasViewed $event)
{
$event->post->views()->attach($event->user->id);
}
关系是用withTimestamps 定义的,但是我怎样才能在handle() 方法中过滤来做类似的事情
$lastView = User::where('user_id', $userId)
->where('post_id', $postId)
->in('post_views')
->orderBy('id', 'DESC')
->first();
这将返回来自post_views 的用户/帖子组合的最后一行,因此我可以确定它在一小时前插入的时间戳并添加新条目或跳过创建新条目。
【问题讨论】:
标签: php laravel eloquent many-to-many