使用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()方法,谢谢......
答案 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();
}