jcr*_*opp 0 doctrine dql doctrine-orm
我有两个与关系连接的实体(AdminMembers\Entity\Members和AdminEvents\Entity\Invitees)OneToMany.因为关系是在实体中定义的,所以我可以使用以下DQL语句来查询数据:
$dql = "SELECT i FROM AdminEvents\Entity\Invitees i WHERE i.eventID=$eventID";
Run Code Online (Sandbox Code Playgroud)
并且,通过这种配置,我可以使用像$invitee->getMember()->getMemberLastName()我的ZF2视图脚本中的语句来从连接的实体中获取数据.
现在,如果我想按字段对DQL语句中的数据进行排序AdminMembers\Entity\Members,我遇到了问题.以下声明
$dql = "SELECT i FROM AdminEvents\Entity\Invitees i WHERE i.eventID=$eventID ORDER BY i.memberLastName, i.memberFirstName";
Run Code Online (Sandbox Code Playgroud)
抛出错误消息
Class AdminEvents\Entity\Invitees has no field or association named memberLastName
Run Code Online (Sandbox Code Playgroud)
这是因为字段memberLastName和memberFirstName定义AdminMembers\Entity\Members.虽然关联确实存在,但我确定我只是缺少引用memberLastName和语法中的一些语法memberFirstName.
我知道我可以扩展DQL语句以加入DQL语句中的实体,这将允许我识别连接表并将元素与表标识符相关联.但是,由于表已经在实体定义中加入,因此不必再次连接它们.
是否有一种特殊的语法用于在DQL语句中引用连接表实体而不"重新加入"语句中的表?
您应该加入成员实体,以便能够按其字段进行排序.查看文档:
$dql = "SELECT i, m FROM AdminEvents\Entity\Invitees i JOIN i.member m WHERE i.eventID=$eventID ORDER BY m. memberLastName, m.memberFirstName";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |