Здесь старомодная демоверсия на основе position: absolute
контейнера содержимого и position: relative
родительского контейнера.
Что касается современного способа сделать это - Flex Box являются лучшими.
Из моего опыта, каждый комплекс , где функция
сгруппирована в скобках (я использую доктрину 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
Что касается разницы между where, andwhere и addwhere, я не верю, что есть существенная разница по сравнению с тем, когда я в последний раз читал источник. Однако я бы посоветовал вам прочитать источник Доктрины. Это действительно просто и помогает заполнить пробелы в документации (их много). Что касается сложных операторов where, я сам задавался вопросом, но пока в этом не нуждался.
Поскольку кажется, что вы не можете выполнять сложные запросы с помощью DQL, я написал следующий SQL-код для передачи методу andWhere ():
$q->andWhere("(category1 IN $subcategory_in_clause
OR category2 IN $subcategory_in_clause
OR category3 IN $subcategory_in_clause) AND TRUE");
Обратите внимание на «И ИСТИНА», хитрость чтобы синтаксический анализатор не игнорировал внешние скобки.