@adam_carraway

Правильно ли я делаю логику счетчика просмотров поста?

у меня две таблицы: 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)));
                }

Правильно ли я делаю? Или есть какой-то способ получше ?
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 1
firstOrCreate/ firstOrNew помогут упростить код
https://laravel.com/docs/5.8/eloquent#other-creati...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы