在不使用foreach循环的情况下从symfony表单获取对象属性

时间:2018-01-30 01:42:05

标签: php arrays forms symfony

范围从表格中选择。让我们说用户选择4& 9.如何在这些范围内检索测试和测验 - 只有那些范围,而不是在$ range范围内循环?由于$ ranges是一个对象,我认为我可以使用类型转换将其转换为一个简单的数组,即(数组)$ range ...但是这会导致一个空数组。最终我试图在不使用foreach循环的情况下获得一个范围的id

$ranges = $form->get('ranges')->getData();

$tests = $em->getRepository('AppBundle:Test')->findBy($ranges);
$quizes = $em->getRepository('AppBundle:Quiz')->findBy($ranges);

$testsAndQuizzes = array_merge($tests, $quizzes);

这样做的目的是,一旦我达到这一点,我可以遍历我的合并测试和测验数组,并获得所有可能的结果,并使用一个较少的循环。

foreach ($testsAndQuizes as $tq) {
    var_dump($tq);//all of $tq's in $ranges 4 & 9.
}

1 个答案:

答案 0 :(得分:0)

利用查询?

$repository = $this->getDoctrine()->getRepository('AppBundle:Test');

$query = $repository->createQueryBuilder('test')
    ->where('test.id >= :range_min')
    ->andWhere('test.id <= :range_max')
    ->setParameter(['range_min' => $range_min, 'range_max' => $range_max])
    ->getQuery();

$test = $query->getResult();

Quiz执行相同操作。