$pfilters = ProductFilters
::whereIn('Tb_Product_filters.filter_value', $values)
->groupBy('Tb_Product_filters.product_id')
->join("Tb_Products","Tb_Products.id","Tb_Product_filters.product_id")
->join('Tb_Identities', 'Tb_Identities.id', '=', 'Tb_Products.employee_id')
->select(
"Tb_Products.*",
"Tb_Identities.first_name as fname",
"Tb_Identities.last_name as lname"
)
->get()
->toArray();
Этот запрос дает мне все продукты, которые находятся в массиве значений, я хочу, чтобы только продукт включал все значения, например,
если у меня есть значения = [1,2,3]
это приведенное выше утверждение дает мне любой продукт имеет value_id
= 1
или 2
, 3
Я хочу, чтобы продукт собрал 3 атрибута, что означает, что только у продукта есть value_id
= 1
, 2
и 3
, поиск должен выполняться во многих строках.
у меня 4 стола
товары
фильтры
filters_value
products_filters
Сначала мы начнем с фильтров
любой фильтр имеет одно или несколько filters_values
пример: filter = color, filters_value = [красный, синий, зеленый] теперь вы можете установить связь между ними, используя filter_id как ключ forgen
таблица продуктов: при создании продуктов я выбираю фильтр продуктов и значения
пример: iphone = [цвет: глоб, ром: 128 Гб]
поэтому я буду хранить их в products_filters
таблица products_filter будет содержать; product_id, filter_id, filter_value
Допустим, я хочу продукты с цветом: красный, и 64 ГБ?