[英]Doctrine Query Builder / DQL - How to write query with WHERE column = BINARY 'text'
[英]How to make multiple WHERE IN column query in Doctrine query builder?
我想使用带有两列检查的WHERE IN语句更新db中的多个记录。
纯MySql原始查询看起来像这样..并且有效:
UPDATE poll_quota q SET q.count = q.count+1 WHERE q.form_id=14 AND ((q.field_id,q.value) IN (('A',1),('B',1)))
$this->createQueryBuilder("q")
->update()
->set("q.count","q.count+1")
->where("q.form_id=:form_id")
->andWhere("((q.field_id,q.value) IN (:wherein))")
->setParameter(":form_id",$form_id)
->setParameter(":wherein",$where_in)
->getQuery()
->execute()
;
[Syntax Error] line 0, col 103: Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got ','
[1/2] QueryException: UPDATE Edge\PollBundle\Entity\Quota q SET q.count = q.count+1 WHERE q.form_id=:form_id AND ((q.field_id,q.value) IN (:wherein)) +
尝试做这样的事情,也不起作用:
[...]->andWhere("((q.field_id,q.value) IN ({$where_in}))")
$ where_in包含这样的字符串:
"('A',1),('B',1)"
DQL不允许在WHERE IN语句中使用多个列,因为并非所有DBMS都支持它。 您可以使用$this->getEntityManager()->getConnection()->executeUpdate()
通过原始SQL运行它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.