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查询不工作_Symfony - Fatal编程技术网

Symfony2查询不工作

Symfony2查询不工作,symfony,Symfony,我不熟悉Symfony 2,我有一个场景,其中测验E由测验a、B、C和D组成。这些被存储为测验E的子测验。我正在尝试查询以查找测验E的所有子测验的所有问题,但它只返回测验a的问题。我的代码: $subQuizesString = ''; foreach($quiz - > getSubQuizes() as $key = > $quiz) $subQuizesString. = $quiz - > getId().','; $subQuizesString = rtrim($s

我不熟悉Symfony 2,我有一个场景,其中测验E由测验a、B、C和D组成。这些被存储为测验E的子测验。我正在尝试查询以查找测验E的所有子测验的所有问题,但它只返回测验a的问题。我的代码:

$subQuizesString = '';
foreach($quiz - > getSubQuizes() as $key = > $quiz)
$subQuizesString. = $quiz - > getId().',';
$subQuizesString = rtrim($subQuizesString, ',');

$query = $em - > createQuery(
    'SELECT question
                    FROM CriticalReadingQuizBundle:Question question
                    WHERE question.quiz in (:quizes) AND question.active = true
                    ORDER BY question.orderIndex, question.quiz, question.id') - > setParameter('quizes', $subQuizesString);

$questions = $query - > getResult();
首先,我不想像在Symfony2中那样编译子测验字符串,这应该是不必要的(但我不知道怎么做),其次(可能更重要的是),我想知道为什么我只收到测验A的问题

一如既往,您的帮助是宝贵的,非常感谢。

请尝试以下方法:

$subQuizesArray = array();
foreach($quiz - > getSubQuizes() as $key = > $quiz) {
   $subQuizesArray[] = $quiz - > getId();
}

$query = $em - > createQuery(
    'SELECT question
                    FROM CriticalReadingQuizBundle:Question question
                    WHERE question.quiz IN :quizes AND question.active = true
                    ORDER BY question.orderIndex, question.quiz, question.id') - > setParameter('quizes', $subQuizesArray);

$questions = $query - > getResult();

试着调试一下,例如在dev.log文件中查看执行的查询。这很有效,谢谢。有没有办法在不循环的情况下将子测验id放入数组?类似于$quick->getSubQuizes()->getId()。很明显,这不起作用(我试过了,但有点类似?研究。