Php 多对多选择原则
我阅读了Php 多对多选择原则,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我阅读了Symfony和条令的文档,但是我仍然无法解决这个问题 我正在使用Symfony2。实体设置正确 我有两个数据表: 学生, 团体 我也有映射表: 学生组 假设我有五个小组: g1、g2、g3、g4、g5 我想从g1、g2、g3中选择所有学生 我该怎么做 目前我有这个代码 public function filtered($array) { /* GET DOCTRINE */ $repository = $this->getDoctrine()->getRep
Symfony
和条令
的文档,但是我仍然无法解决这个问题
我正在使用Symfony2
。实体设置正确
我有两个数据表:
学生,
团体
我也有映射表:
学生组
假设我有五个小组:
g1、g2、g3、g4、g5
我想从g1、g2、g3中选择所有学生
我该怎么做
目前我有这个代码
public function filtered($array) {
/* GET DOCTRINE */
$repository = $this->getDoctrine()->getRepository('AppBundle:StudyGroups');
$query = $repository->createQueryBuilder('a')
->andWhere('a.id IN (:ids)')
->setParameter('ids', $array)
->getQuery();
$groups = $query->getResult();
$students = $groups->getStudents();
return $students;
}
这不起作用,因为组上没有getStudents()方法。
但如果我做了这样的事
public function filtered($array) {
/* GET DOCTRINE */
$repository = $this->getDoctrine()->getRepository('AppBundle:StudyGroups');
$query = $repository->createQueryBuilder('a')
->andWhere('a.id IN (:ids)')
->setParameter('ids', $array)
->getQuery();
$groups = $query->getResult();
$students = array();
foreach ($groups as $group) {
$students = $group->getStudents();
}
return $students;
}
这是可行的,但有一个问题:我只是从最后一个foreach循环中获取学生。
我在考虑创建一个数组,但这些都是对象,合并也不起作用。老实说,我觉得有一个比这个更简单的方法,我就是找不到。有什么想法吗 既然你想要学生,那么你应该向学生查询,加入小组并筛选特定的小组。比如:
$repository = $this->getDoctrine()->getRepository('AppBundle:Student');
$query = $repository->createQueryBuilder('student')
->leftJoin('student.groups','group')
->andWhere('group.id IN (:ids)')
->setParameter('ids', $groupIds)
->getQuery();
$students = $query->getResult();
顺便说一下,使用单个字母作为别名是一种邪恶的做法