БД Zend-framework: OR вместо оператора AND

есть такой запрос zend:

$select = $this->_table
               ->select()
               ->where('title LIKE  ?', '%'.$searchWord.'%')
               ->where('description LIKE  ?', '%'.$searchWord.'%')
               ->where('verified=1 AND activated=1');

Другими словами это выглядит так:

SELECT `some_table`.* FROM `some_table` WHERE (title LIKE '%nice house%') AND (description LIKE '%nice house%') AND (verified=1 AND activated=1)

Если у меня есть пара предложений AND, zend соединяет их с помощью оператора AND. Как связать его с оператором ИЛИ? Потому что мне нужно:

...(title LIKE '%nice house%') OR (description LIKE '%nice house%')...

Ваша помощь будет оценена по достоинству.


person Bounce    schedule 21.08.2010    source источник
comment
Я думаю, что будет учитываться только приоритет оператора sql .., потому что эти запросы будут преобразованы в простой sql. Я просто предлагаю, поскольку у меня тоже есть эти сомнения, и я пришел сюда   -  person Rohith Raveendran    schedule 02.07.2013


Ответы (3)


$this->_table->select()->orWhere($condition);

Для создания более сложных запросов (например, подусловий) вам, возможно, придется использовать $this->table->getAdapter()->quoteInto() и писать свой SELECT вручную.

person Yanick Rochon    schedule 21.08.2010

Другие ответы здесь не работают (больше?), Текущее решение - вызвать nest () и unnest () в предложении where:

$select->where
    ->nest()
        ->equalTo('column1', 1)
        ->or
        ->equalTo('column2', 2)
    ->unnest()
    ->and
    ->equalTo('column3', 3);
person Andreas    schedule 28.05.2016
comment
Этот синтаксис похож на Zend FW 2.2. framework.zend.com/apidoc/2.2/ классы / - person Eric Seastrand; 26.04.2018

Я реализовал ваш запрос zend

$select = $this->_table
               ->select()
               ->where('title LIKE  ?', '%'.$searchWord.'%')
               ->ORwhere('description LIKE  ?', '%'.$searchWord.'%')
               ->where('verified=1 AND activated=1');
person SagarPPanchal    schedule 31.01.2014