【发布时间】:2012-11-27 13:20:46
【问题描述】:
我有 5 个实体:
- 隶属关系
- 人
- 用户
- 用户隶属关系
- 人员隶属关系
我的目标是显示一个选择字段列表,我可以在其中选择所有不在 PersonAffiliations 中的 UserAffiliations。
我的想法是在 UserAffiliationRepository 中创建一个公共函数,它将只返回特定用户的那些从属关系,而不是为特定人预设的。
为此,我正在使用:
class UserAffiliationRepository extends EntityRepository
{
public function getUnselectedAffiliations( $user_id = null, $person_id = null )
{
$commQB = $this->createQueryBuilder( 'ua' )
->select('ua');
$commQB->where("ua.user_id = {$user_id}");
$commQB->andWhere( "ua.affiliation_id not in ( select pa.affiliation_id FROM SciForumVersion2Bundle:PersonAffiliation pa where pa.person_id = 3077 )" );
return $commQB->getQuery()->getResult();
}
}
这很好用。
现在,我想在 FormBuilder 中使用这个结果。为此,在我的控制器中,我正在使用:
$affiliations = $em->getRepository('SciForumVersion2Bundle:UserAffiliation')->getUnselectedAffiliations($user->getId(), $author->getId())
$enquiry = new PersonAffiliation();
$formType = new SubmissionAffiliationAddFormType($user, $affiliations);
$form = $this->createForm($formType, $enquiry);
然后在 Form 类中,我正在使用:
$builder->add('affiliation', 'entity', array(
'class' => 'SciForumVersion2Bundle:UserAffiliation',
'multiple' => true));
但是在这里,我得到了特定用户的所有从属关系,而不仅仅是那些尚未在 PersonAffiliations 实体中准备好的那些。
有什么帮助吗?谢谢。
【问题讨论】:
标签: php symfony doctrine-orm dql