symfony2 doctrine findBy在arrayCollection中的id

时间:2014-03-28 20:48:29

标签: php symfony doctrine-orm findby

使用Symfony2.3.​​4和Doctrine。

我有一个与Class Edition具有ManyToMany关系的学生。

现在在我的StudentController中,我有这个IndexAction($ edition_id),不是列出数据库中的所有学生,而只列出与给定版本ID相关的学生。

$entities = $em->getRepository('PersonBundle:Student')->findBy(array(
    ????????
));

我正在考虑使用$ edition_id的某些标准但不能提出任何标准。

小贴士表示赞赏,谢谢。

@dmnptr: 我试过这个,我对此很新,请告诉我是否做错了。

我把你在控制器中写的那个函数和我添加的方法IndexAction($ edition)

$students = this->findAllByEdition($edition);

现在的问题是参数$ edition来自这样的树枝模板:

<a href="{{ path('student', { 'edition': entity}) }}"</a>

拥有Edition对象的实体

但是当我这样做时,实体会返回__toString()方法,这意味着一个带有版本名称的字符串,而不是版本本身,这就是你给我的功能所使用的。

现在,您是否碰巧知道从模板获取对象本身的方法,而不是__toString()方法,谢谢......

1 个答案:

答案 0 :(得分:4)

您应该使用自定义存储库方法。将$edition作为参数传递,而不仅仅是id。像这样:

public function findAllByEdition($edition)
{
    $em = $this->getEntityManager();

    $queryText  = "SELECT s FROM PersonBundle:Student s ";
    $queryText .= "WHERE :edition MEMBER OF s.editions";

    $query = $em->createQuery($queryText);
    $query->setParameter('edition', $edition)

    return $query->getResult();
}