簡體   English   中英

如何在Doctrine查詢構建器中進行多個WHERE IN列查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM