Como posso fazer essa consulta no 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
Eu também poderia fazer isso com um join, mas preciso desse formato para desempenho.
p
.active
= 1 verifica as tabelas de produtos, enquanto sua consulta a está aplicando à tabela de ProductCategory .... certo ?? ou há algo que estou perdendo ..?Dê uma olhada na documentação de localização avançada do Fluent: http://laravel.com/docs/queries#advanced-wheres
Aqui está um exemplo do que você está tentando alcançar:
Isso produzirá:
fonte
table()
método ao invés dofrom()
. Não tive essa situação em L3, desculpe!Você pode usar a variável usando a palavra-chave "use ($ category_id)"
fonte
O código a seguir funcionou para mim:
fonte
Você pode usar o Eloquent em diferentes consultas e tornar as coisas mais fáceis de entender e manter:
e então colocamos todos juntos:
Isso irá gerar a mesma consulta que você escreveu em sua pergunta.
fonte
O script é testado no Laravel 5.xe 6.x. O
static
fechamento pode melhorar o desempenho em alguns casos.gera o SQL
fonte
Laravel 4.2 e além, pode usar a consulta de relacionamento try: -
fonte
fonte
usando uma variável
fonte
Tente esta ferramenta online sql2builder
fonte