Основываясь на ваших изменениях, есть несколько разных способов справиться с этим.Технически, поскольку все посты включены на страницу, можно предположить, что пользователь прочитал их все и просто сохранил идентификатор пользователя для всех постов, загруженных перед передачей представления.
Если вы хотели чего-то большегоуточненный, однако, вы можете использовать ajax-метод для публикации идентификатора пользователя, идентификатора публикации и т. д. при прокрутке, хотя я не нахожу это очень практичным, поскольку это может вызвать проблемы, если кто-то просматривает слишком быстро.
Лучший вариант (не требующий взаимодействия с пользователем) - загружать пару сообщений одновременно.Либо автоматически при прокрутке (см. этот ответ ), либо с помощью нумерации страниц Laravel (https://laravel.com/docs/5.7/pagination) и установите идентификатор пользователя при загрузке данных.
Пример:
$posts = Posts::paginate(5);
foreach($posts as $p) {
DB::table('viewables')->insert([
'user_id' => $user->id,
'viewble_id' => $p->id,
`viewable_type` => $p->type,
]);
}