doctrine dql/queryBuilder 参数中有 foreach 或数组

doctrine dql/queryBuilder with a foreach or array in parameters

在我的 symfony 应用程序中,我通过 ajax 脚本将变量恢复为字符串。

这个变量看起来像这样:

$slug = "1-2-3-4-4-5-6-7" /* it could more*/
$vars = explode('-',$slug ); /*push the $slug string in an array */

/* recover all value of the array */
foreach ($vars as $var) {
      echo $var;
    }

现在我需要在 dqlquery builder 中使用这个 foreach,因为所有 $var 都是一个实体的 ID,我需要传递所有这些值以获得正确的结果。

如何使用参数数组进行查询或在 doctrine 查询生成器中进行 foreach?

我已经在 queryBuilder 方法中尝试过这个:

->setParameters("id" => $vars);

它return给我一个错误:SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)

我也在 queryBuilder 中尝试这样做:

->setParameters(array('id' => array($vars)));

这里我没有报错,但是没有return的好结果。事实上,如果有很多 ID,我在数据库中只有一个 结果。

尝试使用 ->setParameter('ids', $ids)。其中 $ids 是 ids

的数组

解决方案是

我创建了一个更复杂的查询来回答所有条件:

array is empty

array contains only 1 value

array contains many values

如果您想检查该 ID 是否在给定的一组特定 ID 内,您可以使用 IN

$qb = $this->createQueryBuilder('s')
        ->addSelect('u')
        ->innerJoin('s.field','u')
        ->where("u.id IN(:ids)")
        ->setParameter('ids', array_values($ids));