у меня две таблицы: post и post_views(здесь хранятся ip пользователя и id поста)
Я делаю так: когда пользователь переходит по адресу post/id то в контроллере срабатывает соответствующий метод который сначала берет данные поста из таблицы post и дальше проверяет в таблице post_views наличие записи с ip = ip пользователя зашедшего на страницу с постом и post_id = id поста. Если такой записи нет (значит пользователь впервые зашел на данную страницу), я заношу запись в таблицу post_views и получаю количество просмотров поста и передаю его в событии всем пользователя которые слушаю канал данного поста :
if (!PostView::where([['ip', $request->ip()], ['post_id', $dataPost->id]])->first()) {
$new = new PostView;
$new->ip = $request->ip();
$new->post_id = $dataPost->id;
$new->save();
$count = PostView::where('post_id',$dataPost->id)->count();
event(new Change_Views_Post(array('count'=>$count,'id'=>$dataPost->id)));
}
Правильно ли я делаю? Или есть какой-то способ получше ?