Jak mogę zrobić to zapytanie w 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
Mógłbym to również zrobić za pomocą złączenia, ale potrzebuję tego formatu do działania.
p
.active
= 1 sprawdź tabele produktów, podczas gdy zapytanie stosuje je do tabeli ProductCategory… prawda? czy jest coś, czego mi brakuje ..?Zapoznaj się z zaawansowaną dokumentacją dotyczącą środowiska Fluent: http://laravel.com/docs/queries#advanced-wheres
Oto przykład tego, co próbujesz osiągnąć:
To da:
źródło
table()
metody zamiastfrom()
. Przepraszam, nie miałem takiej sytuacji w L3!Możesz użyć zmiennej, używając słowa kluczowego „użyj ($ category_id)”
źródło
Poniższy kod zadziałał dla mnie:
źródło
Możesz używać Eloquent w różnych zapytaniach i ułatwiać zrozumienie i utrzymanie:
a potem zebraliśmy wszystko razem:
Spowoduje to wygenerowanie tego samego zapytania, które napisałeś w swoim pytaniu.
źródło
Skrypt został przetestowany w Laravel 5.x i 6.x.
static
Zamknięcie może poprawić wydajność w niektórych przypadkach.generuje SQL
źródło
Laravel 4.2 i nowsze wersje mogą używać zapytań o relacje typu try: -
źródło
źródło
za pomocą zmiennej
źródło
Wypróbuj to narzędzie online sql2builder
źródło