gpt4 book ai didi

php - $query->andWhere() 中的 Foreach 语句

转载 作者:行者123 更新时间:2023-12-04 01:48:33 26 4
gpt4 key购买 nike

我需要使用 foreach 语句通过 Doctrine QueryBuilder 创建一个查询,目前使用了以下语句但不是最正确的:

// $query object
foreach ($searches as $value) {
$query->andWhere($query->expr()->orX(
$query->expr()->eq('c.firstName', ':name'),
$query->expr()->eq('c.lastName', ':name')
))->setParameter('name', $value);
}

这给了我:

....WHERE ....

AND (a0_.first_name = ? OR a0_.last_name = ?)

AND (a0_.first_name = ? OR a0_.last_name = ?)

ORDER BY a0_.first_name ASC

当我需要的时候:

...WHERE .....

AND (a0_.first_name = ? OR a0_.last_name = ? OR a0_.first_name = ? OR a0_.last_name = ?)

ORDER BY a0_.first_name ASC

我需要这样的东西,但是 PHP 当然不允许:

// $query object
$query->andWhere($query->expr()->orX(
foreach ($searches as $value) {
$query->expr()->eq('c.firstName', ':name'),
$query->expr()->eq('c.lastName', ':name')
}
))
->setParameter('name', $value);

你能帮我使用foreach语句来达到我的目标吗?感谢您平时的帮助。

最佳答案

对于需要其中一种解决方案的每个人:

if (!empty($search)) {
$orX = $query->expr()->orX();
$i = 0;
foreach ($searches as $value) {
$orX->add($query->expr()->eq('c.firstName', ':name'.$i));
$orX->add($query->expr()->eq('c.lastName', ':name'.$i));
$query->setParameter('name'.$i, $value);
$i++;
}
$query->andWhere($orX);
}

关于php - $query->andWhere() 中的 Foreach 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064194/

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