gpt4 book ai didi

mysql - Doctrine - 查询构建器使用数组设置参数(嵌套/多个值)

转载 作者:行者123 更新时间:2023-11-29 09:41:14 24 4
gpt4 key购买 nike

我在 PHP 应用程序中使用 Doctrine(但不使用 Symfony)。我尝试仅使用一个 addWhere/orWhere 进行动态查询。

这是我的代码:

$alias = 'a';
$key = 'id';
$qb = $repo->createQueryBuilder($alias);
$qb->select($alias);
$qb->andWhere($alias . ' = ' . $key);

// Key is "id" and value is a dynamic array "[1, 2, 3, 6...]"
$qb->setParameter($key, $value);

如果值仅为“1”,我得到此 DQL:

SELECT a FROM contact a WHERE a = :id

而且它有效。但是当值作为数组时,我想在没有多个“andOr”的情况下执行此查询,因为我的数组是动态的。是否有一种方法可以自动添加(addWhere 或 orWhere)以使用我的数组自动获取:

SELECT a FROM contact a WHERE a = :id OR a:= id OR a:= id

我知道我自己可以做一个for循环,但我想知道学说中是否已经有一个现有的方法。

最佳答案

您应该使用IN指令。

$alias = 'a';
$key = 'id';
$values = [1, 2, 3];
$qb = $repo->createQueryBuilder($alias);
$qb->select($alias);
$qb->where(\sprintf("%s.%s IN (:values)", $alias, $key));

$qb->setParameter('values', $values);

我希望这会有所帮助。

关于mysql - Doctrine - 查询构建器使用数组设置参数(嵌套/多个值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56576402/

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