Здравствуйте! Решил добавить в своё приложение на Laravel поиск с помощью Sphinx. Поставил библиотеку fobiaphp / laravel-sphinx с настройкой разобрался. Есть проблема с составлением запроса, в частности по выводу всех категорий для определённого товара. В Laravel этот запрос выглядит так:
select `categories`.*, `categories_products`.`product_id` as `pivot_product_id`, `categories_products`.`category_id` as `pivot_category_id`
from `categories` inner join `categories_products` on `categories`.`id` = `categories_products`.`category_id`
where `categories_products`.`product_id` in (41525, 49423, 49823, 52184, 52553, 52554, 52555, 52556, 52557, 52558, 52559, 52560, 52561, 52562, 52564)
В принципе со своей задачей справляется и выводит категории корректно.
В sphinx я сделал похожий запрос, он отрабатывает, но например где привязано несколько категорий, он выводит везде по одной. Собственно настройка индекса в сфинксе:
source categories : conn {
sql_query = SELECT cp.product_id, cp.category_id, cp.product_id AS product_id_attr, cp.category_id AS category_id_attr, c.name, c.name AS name \
FROM categories AS c \
INNER JOIN categories_products AS cp ON c.id = cp.category_id \
sql_attr_uint = product_id_attr
sql_attr_uint = category_id_attr
sql_field_string = name
}
Вот так он выглядит на деле:
select *, product_id_attr as pivot_product_id_attr, category_id_attr as pivot_category_id_attr
FROM categories
where product_id_attr in (52842, 52843, 52844, 52850, 53521, 53522, 53523, 53524, 53525, 53526, 53527, 53528, 53529, 53530, 53531)
Таблица categories_products имеет только 2-а столбца: category_id и product_id.