Laravel — показать пропущенное содержимое

#php #laravel

#php #laravel

Вопрос:

В моем приложении Laravel у меня есть Users и Posts . Что я пытаюсь сделать, так это проверить, были ли созданы какие-либо сообщения во время выхода пользователя из системы, а затем отобразить сообщение типа «Вот что вы пропустили», похожее на Twitter.

Я думал о том, чтобы вызвать таблицу missed_content , которая принимает идентификатор пользователя, модель и идентификатор модели, которые я бы просматривал для данного пользователя и отображал пропущенный контент.

Итак, запланированная задача будет искать новое содержимое и добавлять строки в эту таблицу, если created_at дата публикации была после даты пользователя last_login_at .

Затем, когда пользователь входит в систему, я бы отображал содержимое и обновлял last_login_at .

Меня беспокоит, будет ли это масштабируемым, как если бы миллион пользователей пропустил 20 сообщений, это 20 миллионов записей.

Комментарии:

1. К вашему сведению, при правильных индексах 20 миллионов записей — это не так уж много.

2. Просто используйте кэшированный запрос при входе пользователя в систему. После этого отобразите «пропущенное содержимое». Это намного стабильнее, как я и думал.

Ответ №1:

Почему бы вам не выполнить последний вход пользователя. а затем получить все сообщения, сделанные с этой даты?

 $posts = Post::where('created_at', '<=', Auth::user()->last_sign_in)->get()
 

в вашем блейде вы можете посчитать это

 <p>You have missed: {{ $posts->count() }} posts</p>
 

Вам не понадобится дополнительная таблица