У меня есть приложение Laravel, использующее базу данных MySQL с миллионами записей в нескольких таблицах, которые упрощаются:
Table: products
Columns: product_id name price stockist colour brand stock date_added
Table: stockists
Columns: stockist_id name phone email post_code stock
Table: categories
Columns: category_id name slug level
Table: category_product
Columns: category_id product_id
Пользователи могут искать продукты на основе большого количества критериев (приблизительно 15), охватывая почти все связанные с продуктом данные. Пример поиска может выглядеть так:
Верните первые 50 продуктов, которые:
- стоят более 5
фунтов стерлингов - стоят меньше 30
фунтов стерлингов - маркируются компаниями «Apple», «Samsung» или «LG»
- относятся к «зарядным устройствам» или «аккумуляторам» категорий, но не «случаи» или «обложки» или «автомобильные зарядные устройства»
- были добавлены менее двух недель назад
Я хочу иметь возможность хранить параметры поиска против пользователя, который сделал их, чтобы они могли повторно запускать поиск несколько раз. Из моих исследований решения, с которыми я столкнулся, включают представления, которые, как я считаю, не будут работать, поскольку они не принимают параметры и подготовленные утверждения, которые не будут работать, так как они не могут быть сохранены. Это оставляет хранимые процедуры или сохранение в выделенной таблице со столбцом для каждого параметра. Я склоняюсь к последней из двух, хотя я вижу, что очень быстро запутался. Может ли кто-нибудь указать мне на лучшее решение проблемы? Благодарю.
php,mysql,sql,database,laravel,