使用Symfony2.3.4和Doctrine。symfony2学说findBy id arrayCollection
我有一个类的学生与一个类版本ManyToMany关系。
现在在我的StudentController中,我有这个IndexAction($ edition_id)来列出数据库中的所有学生,但只列出与给定Edition ID相关的所有学生。
$entities = $em->getRepository('PersonBundle:Student')->findBy(array(
????????
));
我在想使用$ edition_id的某种标准,但不能拿出任何。
提示表示感谢,谢谢。
@dmnptr: 我在尝试,我对此很新,所以告诉我如果我做错了什么。
我把你的控制器和方法的indexAction($版)我加
$students = this->findAllByEdition($edition);
现在的问题是,参数$版本是从这样的树枝模板来写的函数:
<a href="{{ path('student', { 'edition': entity}) }}"</a>
是实体谁持有版本对象。
但是,当我这样做时实体返回__toString()方法,这意味着一个字符串与版本的名称,而不是版本本身,这是你给我使用的功能。
现在,你知道发生了一种从模板获取对象本身,而不是__toString()方法,谢谢...
您不能将整个对象压缩到URL中。你应该在'path()'中使用'entity.id',然后在你的控制器中使用它的id来获得你需要的实体。此外,'findAllByEdition'应该进入自定义存储库,而不是控制器。 – dmnptr
这就是我的想法,只有我不知道如何调用该方法,如果它不在控制器中,你能告诉我吗? 而且,这只是可以肯定的,将它留在控制器中的风险是什么? – jmiguel
我不认为在控制器中使用这种方法存在风险。你可以做到这一点,这是你的选择。但是,这被认为是一种糟糕的风格,因为它将逻辑上属于存储库的代码添加到控制器中,使其不必要的大。这里是更多关于自定义存储库:http://symfony.com/doc/current/book/doctrine.html#custom-repository-classes – dmnptr