#sql #laravel
Вопрос:
Я хочу получить записи из таблицы product_spec_data, связанные с продуктами, идентификатор категории которых равен 5.
Пожалуйста, помогите мне сделать запрос к базе данных…
Комментарии:
1.Что вы пробовали? Установлены ли отношения в ваших моделях? Это действительно не похоже на «сложный запрос…», просто простой
hasManyThrough
laravel.com/docs/8.x/eloquent-relationships#has-many-through2. @gert-b Спасибо за подсказку, я постараюсь реализовать ее сейчас.
3. @gert-b, можешь показать пример? Как это должно выглядеть? Здесь я получаю коллекцию продуктов: $категория->продукты (). как мне сделать так, чтобы я получал только данные спецификации продукта.
Ответ №1:
Все взаимосвязи четко изложены, простое объединение между таблицами будет работать.
SELECT psd.*
FROM product_spec_data psd
INNER JOIN product_spec_values psv ON psd.id = psv.product_spec_data_id
INNER JOIN products prod ON psv.product_id = prod.id
INNER JOIN categories cat ON prod.category_id = cat.id
-- with category id = 5
WHERE cat.id = 5;
Ответ №2:
Я не уверен, что вы подразумеваете под сложным запросом. Я предполагаю, что ваш вопрос не завершен. Я думаю, что запрос на ваш вопрос (если это T-SQL) будет следующим
select d.*
from product_spec_data d
left outer join product_spec_values v on d.id=v.product_spec_data_id
left outer join products p on v.product_id=p.id
where p.category_id=5
(Я думаю, что в MySQL также приведенный выше синтаксис останется прежним, вы можете удалить предложение [outer] в MySQL)