Тут нету ничего нестандартного, я бы сделал так:
1) Таблица для избранного: пользователь, материал, время и т.п.
Сравнить количество лайков за вчера и сегодня в таком случае не проблема, но, если ваше количество лайков исчисляется десятками тысяч на запись, то можно еще добавить таблицу с агрегированными за день данными по каждой записи и обновлять ее n раз в сутки.
2) Поле у записи, в которое пишется количество лайков, чтобы было проще сравнивать записи между собой, выводить агрегированный значения и т.п., без обращения к таблице из пункта 1.
Для обновления этого поля можно повесить на триггер (на стороне БД) или прописать в методах модели, я бы выбрал второе, т.к., в случае, если после вас кто-то будет работать с кодом или большая команда, то о триггере всем нужно знать и т.п., а когда это в коде, то сразу видно.