我有一个像这样的数组 -
[
['mark', 29],
['jolly', 28],
['john', 19],
['jim', 21],
.
.
.
]
我想在where子句中使用它,以便只有当列name
和age
匹配子列时列才更新,尝试这样: -
createQueryBuilder()
->update('table', 't')
->set('t.eligible', 1)
->where('t.name', 't.age' IN(:nameAgeArray))
->setParameter('nameAgeArray', $nameAgeArray)
->getQuery()
->execute();
但这种方式不起作用。有没有办法实现这个目标?
修改 - 数据库结构 -
name age eligible
mark 29 null
john 21 null
Max 20 null
答案 0 :(得分:0)
如this answer中所述(已在@PaulSpiegel中提及他的评论),您不能在此类条款中使用多个字段/列。
正如您在this answer here中所述,此限制也适用于orderBy
条款。
要使用多个条件,您必须分成两个数组,一个用于名称,一个用于年龄,然后您可以这样做:
createQueryBuilder()
->update('table', 't')
->set('t.eligible', 1)
->where('t.name', IN(:nameArray))
->andWhere('t.age', IN(:ageArray))
->setParameter('nameArray', $nameArray)
->setParameter('ageArray', $ageArray)
->getQuery()
->execute();