Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2 Querybuilder-多对多关系_Symfony_Doctrine_Many To Many_Query Builder - Fatal编程技术网

Symfony2 Querybuilder-多对多关系

Symfony2 Querybuilder-多对多关系,symfony,doctrine,many-to-many,query-builder,Symfony,Doctrine,Many To Many,Query Builder,我在查询生成器方面有点困难。我有实体类别和预算,它们有多对多关系。用户应该能够创建具有给定类别的新预算。创建新预算时,我想检查是否存在包含给定类别的现有预算。 为了更好地解释,假设我有几个类别:食品、旅游、电子产品,并且已经为旅游和食品创建了预算,然后用户想要为旅游和食品创建另一个预算,当然他不应该这样做。 我尝试在中使用,但它只接受单个值,不接受数组: $budgets = $this->createQueryBuilder('bud'); $budgets->where('bud

我在查询生成器方面有点困难。我有实体类别和预算,它们有多对多关系。用户应该能够创建具有给定类别的新预算。创建新预算时,我想检查是否存在包含给定类别的现有预算。
为了更好地解释,假设我有几个类别:食品、旅游、电子产品,并且已经为旅游和食品创建了预算,然后用户想要为旅游和食品创建另一个预算,当然他不应该这样做。
我尝试在中使用,但它只接受单个值,不接受数组:

$budgets = $this->createQueryBuilder('bud');
$budgets->where('bud.user = :user')
->andWhere($budgets->expr()->in('bud.tags', array(10, 11, 12)))
->setParameter('user', $budget->getUser())
->getQuery()->getResult();

这当然会引发一个异常。

答案的一部分是:

// Example - $qb->expr()->in('u.id', array(1, 2, 3))
// Make sure that you do NOT use something similar to $qb->expr()->in('value', array('stringvalue')) as this will cause Doctrine to throw an Exception.
// Instead, use $qb->expr()->in('value', array('?1')) and bind your parameter to ?1 (see section above)
public function in($x, $y); // Returns Expr\Func instance
我看到了

编辑
有一个SQL语句允许您筛选只检查所有给定值的行。 这是
ALL
语句

对于
对于
为了

有条令使用(从)

其中,
$subquery
应该类似于:

SELECT id_categorie FROM budget_categorie WHERE id_budget = '$idBudget'

是的,但in函数的问题是,$x参数只能是一个值(这意味着in将返回与$y参数中数组中的结果具有相同id的所有结果),而我不能在('bud.tags',数组(1,2,3))中执行。问题在'bud.tags'中,而不是在数组中,tags是一个数组,它必须是单值的。很抱歉,我弄糊涂了。我现在正在寻找好的问题……;)你能展示一下数据库中存储budget和budget_类别的部分吗?谢谢,我会看一下all语句并告诉你我从哪里得到的:),如果我仍然无法解决它,我会用db和entity类更新我的问题
SELECT id_categorie FROM budget_categorie WHERE id_budget = '$idBudget'