Хранить где-то очередь чего нужно сконвертить и в фоне разгребать.
Как именно тут есть варианты: начиная от таблицы в mysql и крона, кончая серверами очередей habrahabr.ru/post/132433
Берете redis, при добавлении статьи пихаете ее ид в list нужной категории, в котором храните последних 10 или сколько там вам надо redis.io/commands/lpush добавлять redis.io/commands/ltrim чистить лишнее redis.io/commands/lrange выбирать
Тоесть будет несколько списков с названиями latest:category:1, latest:category:2 итд
Потом просто выбираете по n идишников из нужных и тасуете как хотите, можете чекать дубли итп.
Документацию не судьба почитать? У Laravel она отличная и компактная, с примерами.
Добавить к новому юзеру роли 1,2,3 $user->roles()->attach([1,2,3])
Изменить у юзера набор ролей на 4,8,9 $user->roles()->sync([4,8,9])