Как я могу сделать этот запрос в Laravel:
SELECT
`p`.`id`,
`p`.`name`,
`p`.`img`,
`p`.`safe_name`,
`p`.`sku`,
`p`.`productstatusid`
FROM `products` p
WHERE `p`.`id` IN (
SELECT
`product_id`
FROM `product_category`
WHERE `category_id` IN ('223', '15')
)
AND `p`.`active`=1
Я также мог бы сделать это с помощью соединения, но мне нужен этот формат для производительности.
p
.active
= 1 проверьте таблицы продуктов, тогда как ваш запрос применяет его к таблице ProductCategory .... верно ?? или я что-то упускаю ..?Взгляните на расширенную документацию WHERE для Fluent: http://laravel.com/docs/queries#advanced-wheres
Вот пример того, чего вы пытаетесь достичь:
Это произведет:
источник
table()
метод вместоfrom()
. У меня не было такой ситуации в L3, извините!Вы можете использовать переменную, используя ключевое слово "use ($ category_id)"
источник
У меня сработал следующий код:
источник
Вы можете использовать Eloquent в различных запросах и упростить понимание и обслуживание:
а затем складываем все вместе:
Это сгенерирует тот же запрос, который вы написали в своем вопросе.
источник
Скрипт протестирован в Laravel 5.x и 6.x. В
static
некоторых случаях закрытие может улучшить производительность.генерирует SQL
источник
Laravel 4.2 и выше может использовать запрос отношения попытки: -
источник
источник
используя переменную
источник
Попробуйте этот онлайн-инструмент sql2builder
источник