gpt4 book ai didi

php - 如何在 Doctrine 查询构建器中进行多个 WHERE IN 列查询?

转载 作者:可可西里 更新时间:2023-11-01 07:05:09 25 4
gpt4 key购买 nike

我想使用带有两列检查的 WHERE IN 语句更新数据库中的多条记录。

纯 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 运行它

关于php - 如何在 Doctrine 查询构建器中进行多个 WHERE IN 列查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31435177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com