使用Symfony2.3.4和Doctrine。
我有一个与class Edition有多多关系的class Student。
现在在我的StudentController中,我有这个IndexAction($edition_id)来列出DB中不所有的学生,而只是与给定的版本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()方法,谢谢…
您应该使用自定义存储库方法。传递$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();
}