zvermafia
@zvermafia
WebDev

Как автоматический записывать поисковый запрос в БД (Laravel)?

В Laravel делаю такие запросы:
Chapter::where('title', 'LIKE', $query)->paginate(10);
Section::where('title', 'LIKE', $query)->paginate(10);
...

То есть разные модели (и конечно же разные таблицы). Как сделать так что бы переменная $query автоматический записывался в БД и только тогда когда используется метод where().

Сейчас каждый раз там где делаю запрос Model::where(), следом делаю:
SearchQuery::create(array(
	'filter_param' => $param,
	'query'        => $query,
	'founds'       => $founds,
));

Как это автоматизировать?
  • Вопрос задан
  • 2429 просмотров
Решения вопроса 2
Denormalization
@Denormalization
Вариантов на самом деле не много:

  • Создать базовую модель BaseModel (унаследованную от Eloquent) и в ней переопределить метод where добавив сохранение $query. И от BaseModel унаследовать все модели которым нужен данный функционал.
  • Тоже самое что выше, только сделать Repository и добавить в него тот же функционал.
  • Тоже самое что выше, только создать отдельный trait


Непонятна связь между SearchQuery и Chapter/Section. Если есть отдельная таблица SearchQuery, то зачем делать поиск по Chapter/Section?
Так же непонятно когда нужно создавать новую запись, при каких условиях.

Сделать отдельный сервис, который будет рулить всеми поисковыми запросами, и соответсвенно отвечать за CRUD по $query.
Ответ написан
@miki131
Сделать scope, вынести его в trait и использовать в нужных вам моделях
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы