原则-带数组的(嵌套/倍增值)querybuider setParameters

时间:2019-06-13 08:28:33

标签: mysql symfony doctrine-orm

我在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循环,但是我想知道该学说中是否已经存在一种方法。

1 个答案:

答案 0 :(得分:1)

您应该使用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);

我希望这会有所帮助。

相关问题