如何在Symfony2的表单类型类中获取Doctrine仓库?

5
$repository = $this->getDoctrine()->getRepository('ParabolaEntityBundle:ProjectAllocation');
        $query = $repository->createQueryBuilder('p')
                ->where('p.startDate < :sdate and p.employee = :emp and p.endDate > :edate')
                ->setParameter('sdate', date('Y-m-d', time()))
                ->setParameter('edate', date('Y-m-d', time()))
                ->setParameter('emp', $employee->getId())
                ->getQuery();
        $projectAllocate = $query->getResult();

如何在FormType类中使用上述代码?我正在使用此查询来为表单构建器中的选择类型生成数组。
1个回答

6

我认为您应该使用实体类型而不是其他类型,因为它具有query_builder选项。

这个链接:

http://symfony.com/doc/current/reference/forms/types/entity.html

介绍如何操作。

如果出于某些原因您真的不想使用实体类型,您可以在控制器中检索数据,并通过FormType构造函数传递它。这有点快速和简单,但应该完全可行...

控制器:

$this->createForm(new MyFormType($results_from_qb), $form_data );

表单类型:

public function __construct($results_from_qb){
    $this->results_from_qb = $results_from_qb; // store it into class member field to be used latter in buildForm method
}

在实体表单类型中如何使用嵌套查询,因为在我的情况下,我必须根据项目分配实体获取项目实体。 - Rajesh Vasani
肯定有方法可以做到,你能否请解释一下这两个实体是如何相关的?是单向还是双向的?基数是多少? - Jovan Perovic
1
我有一个类似的问题。我有两个实体,我不想在它们之间使用关系。我找到了相关的问题和答案:如何将数据传递给formBuilder从控制器传递数据 - renoirb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接