Сложные операторы Where с помощью Доктрины PHP ORM

Здесь старомодная демоверсия на основе position: absolute контейнера содержимого и position: relative родительского контейнера.

Демо

Что касается современного способа сделать это - Flex Box являются лучшими.

38
задан Wickethewok 26 June 2009 в 15:34
поделиться

3 ответа

Из моего опыта, каждый комплекс , где функция сгруппирована в скобках (я использую доктрину 1.2.1).

$q->where('name = ?', 'ABC')
  ->andWhere('category1 = ? OR category2 = ? OR category3 = ?', array('X', 'X', 'X'))
  ->andWhere('price < ?', 10)

производит следующие SQL:

WHERE name = 'ABC' 
  AND (category1 = 'X' OR category2 = 'X' OR category3 = 'X')
  AND price < 10
68
ответ дан 27 November 2019 в 03:22
поделиться

Что касается разницы между where, andwhere и addwhere, я не верю, что есть существенная разница по сравнению с тем, когда я в последний раз читал источник. Однако я бы посоветовал вам прочитать источник Доктрины. Это действительно просто и помогает заполнить пробелы в документации (их много). Что касается сложных операторов where, я сам задавался вопросом, но пока в этом не нуждался.

0
ответ дан 27 November 2019 в 03:22
поделиться

Поскольку кажется, что вы не можете выполнять сложные запросы с помощью DQL, я написал следующий SQL-код для передачи методу andWhere ():

$q->andWhere("(category1 IN $subcategory_in_clause
OR category2 IN $subcategory_in_clause 
OR category3 IN $subcategory_in_clause) AND TRUE");

Обратите внимание на «И ИСТИНА», хитрость чтобы синтаксический анализатор не игнорировал внешние скобки.

1
ответ дан 27 November 2019 в 03:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: