Benim sorguları oluşturmak için PHP Doktrini ORM kullanıyorum. Ancak, oldukça aşağıdaki yazmak için nasıl anlamaya görünüyor NEREDE DQL (Doktrini Query Language) kullanılarak fıkra edemiyor:
WHERE name='ABC' AND (category1 = 'X' OR category2 = 'X' OR category3 = 'X')
AND price > 10
Parantez nereye nasıl belirleyebilirsiniz?
Ne ben şu anda benim PHP kodu var şudur:
->where('name = ?', 'ABC')
->andWhere('category1 = ?', 'X')
->orWhere('category2 = ?', 'X')
->orWhere('category3 = ?', 'X')
->andWhere('price > ?', 10)
Ama böyle bir şey üretir
WHERE name='ABC' AND category1 = 'X' OR category2 = 'X' OR category3 = 'X'
AND price > 10
hangi operasyonları nedeniyle sırasına, amaçlanan sonuç vermez.
Ayrıca, "nerede", "O nereye" ve "addWhere" yöntemleri arasında bir fark var mı?
UPDATE Ok, it seems like you can't do complex queries using DQL, so I've been trying to write the SQL manually and use the andWhere() method to add it. However, I'm using WHERE..IN and Doctrine seems to be stripping out my enclosing parentheses:
$q->andWhere("(category1 IN $subcategory_in_clause
OR category2 IN $subcategory_in_clause
OR category3 IN $subcategory_in_clause)");