我有 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 实体中准备好的那些。
有什么帮助吗?谢谢你。