#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>
Вам не понадобится дополнительная таблица