在我的sf2项目中,我通过调用
来访问实体集合$user_payment_info_datas = $user->getUserPaymentInfoDatas();
在用户实体中有:
/**
* @ORM\OneToMany(targetEntity="UserPaymentInfoData", mappedBy="user")
* @ORM\OrderBy({"payment_info" = "ASC", "payment_info_data" = "ASC"})
*/
private $user_payment_info_datas;
所以它是1:n关系,用户有很多UserPaymentInfoData。但是,还有另一个名为PaymentInfoData的实体,它包含UserPaymentInfoData的实际值。关系是
User -> UserPaymentInfoData -> PaymentInfoData.
因此,就UserPaymentInfoData中的注释而言,它是:
/**
* @ORM\ManyToOne(targetEntity="PaymentInfoData", inversedBy="user_payment_info_datas")
* @ORM\JoinColumn(name="payment_info_id", referencedColumnName="id")
* @ORM\OrderBy({"title"="ASC"})
*/
private $payment_info_data;
我需要对
返回的集合进行排序$user_payment_info_datas = $user->getUserPaymentInfoDatas();
通过PaymentInfoData(我们称之为'title'
)而不是UserPaymentInfoData中的字段进行升序。
我可以使用Doctrine注释做到这一点吗?或者没有编写DQL?
我知道我可以用:
$user_payment_info_datas = $em->getRepository('STMainBundle:UserPaymentInfoData')
->createQueryBuilder('upid')
->innerJoin ('upid.payment_info_data', 'pid')
->where('upid.user = :user')
->addOrderBy('upid.payment_info', 'ASC')
->addOrderBy('pid.title', 'ASC')
->setParameter('user', $user)
->getQuery()
->getResult();
但问题是,是否可以只使用注释,因为我需要在几个地方修复它,只是更改注释而不是在两个地方创建查询构建器会很方便。