Теперь, когда я прочитал все документы по DQL, у меня все еще есть сомнения, я
пытаясь сделать некоторые вложенные суждения в моем DQL, однако, играя
с DQL я не могу их заархивировать
Чтобы сделать себя более ясным:
У меня есть этот DQL-запрос
$q = Doctrine_Query::create()
->select('c.nombre,c.webpage')
->addSelect('COUNT(m.marca_id) as total_marcas')
->from('Corporativos c')
->leftJoin('c.Marcas m')
->groupBy('c.corporativo_id')
->where('ISNULL(c.deleted_at)')
->orwhere('c.nombre LIKE :nombre', array(':nombre'=>'%'.$srch))
->orWhere('c.nombre LIKE :nombre', array(':nombre'=>'%'.$srch.'%'))
->orWhere('c.nombre LIKE :nombre', array(':nombre'=>$srch.'%'))
->orderBy('c.nombre ASC')
->limit(0,20);
теперь генерируется следующий запрос MySQL:
SELECT c.corporativo_id AS c__corporativo_id, c.nombre AS c__nombre,
c.webpage AS c__webpage, COUNT(m.marca_id) AS m__0 FROM corporativos c
LEFT JOIN marcas m ON c.corporativo_id = m.corporativo_id WHERE
(ISNULL(c.deleted_at) OR c.nombre LIKE :nombre OR c.nombre
LIKE :nombre OR c.nombre LIKE :nombre) GROUP BY c.corporativo_id ORDER
BY c.nombre ASC
Тем не менее, я получаю набор результатов, в которых значение любого удаленного элемента равно нулю.
или другие условия выполнены, я хотел бы сделать
isnull (delete_at) обязательно, если мы говорим с точки зрения SQL
запрос будет выглядеть так:
SELECT c.corporativo_id AS c__corporativo_id, c.nombre AS c__nombre,
c.webpage AS c__webpage, COUNT(m.marca_id) AS m__0 FROM corporativos c
LEFT JOIN marcas m ON c.corporativo_id = m.corporativo_id WHERE
(ISNULL(c.deleted_at) AND (c.nombre LIKE :nombre OR c.nombre
LIKE :nombre OR c.nombre LIKE :nombre)) GROUP BY c.corporativo_id
ORDER BY c.nombre ASC
вы можете видеть, что я только что изменил первый оператор OR для AND и
добавили пару скобок для группировки условий LIKE.
Можно ли заархивировать это в DQL, используя то же самое -> где ()
запись, позволяющая избежать записи всего условия?
спасибо:)