Symfony 3 - Doctrine 2 - 在 oneToMany 关系上的 orderBy 不起作用
Posted
技术标签:
【中文标题】Symfony 3 - Doctrine 2 - 在 oneToMany 关系上的 orderBy 不起作用【英文标题】:Symfony 3 - Doctrine 2 - orderBy on oneToMany relation does not work 【发布时间】:2017-11-06 08:36:12 【问题描述】:我在两个实体之间有一个非常简单的oneToMany
/manyToOne
关系:
一个Workflow
拥有多个States
:
MyBundle\Entity\Workflow:
type: entity
id:
id:
type: integer
generator: strategy: AUTO
oneToMany:
states:
targetEntity: MyBundle\Entity\State
mappedBy: workflow
orderBy:
stateOrder: ASC
cascade: [all]
orphanRemoval: true
fetch: EAGER
...
很多States
拿着一个Workflow
:
MyBundle\Entity\State:
type: entity
id:
id:
type: integer
generator: strategy: AUTO
manyToOne:
workflow:
targetEntity: MyBundle\Entity\Workflow
inversedBy: states
cascade: [persist, merge, refresh]
...
fields:
stateOrder:
type: smallint
但是orderBy: ASC
和orderBy: DESC
都没有命令状态。我跑了php bin/console doctrine:schema:update --force --complete --dump-sql
,在更改选项时清除了缓存并重新启动了apache。
我还尝试doctrines official way 添加orderBy
选项:orderBy: 'stateOrder': 'DESC'
/ orderBy: 'stateOrder': 'ASC'
得到相同的结果...
这是呈现表单时运行的查询:
SELECT
t0.id AS id_1,
t0.name AS name_2,
t0.project_id AS project_id_3,
t4.id AS id_5,
t4.stateOrder AS stateOrder_6,
t4.workflow_id AS workflow_id_7,
t8.id AS id_9,
t8.keyWord AS keyWord_10,
t8.action AS action_11,
t8.workflow_id AS workflow_id_12,
t8.from_id AS from_id_13,
t8.to_id AS to_id_14,
t0.initialState_id AS initialState_id_15
FROM
workflow_Workflow t0
LEFT JOIN workflow_State t4 ON t4.workflow_id = t0.id
LEFT JOIN workflow_Transition t8 ON t8.workflow_id = t0.id
WHERE
t0.id = '10';
所以 order by 不是查询的一部分...
任何建议为什么这不起作用?
【问题讨论】:
您是否使用特殊查询获取这些实体?如果是这样:State
实体是否已加入?
另外:DDC-3448 可能是相关的。
不,实体由 Symfonys ParamConverter
自动加载...但我在 github 上发现了问题:orderBy
不适用于 EAGER
!。无论如何,谢谢...(您可以更快地找到问题!谢谢)
【参考方案1】:
众所周知,open issueorderBy
不能与 fetch: EAGER
结合使用。所以要么删除fetch: EAGER
或sorting the doctrine collection 解决问题。
【讨论】:
以上是关于Symfony 3 - Doctrine 2 - 在 oneToMany 关系上的 orderBy 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 3 - Doctrine 2 - 在 oneToMany 关系上的 orderBy 不起作用
Symfony 2 + Doctrine 2 + PHPUnit 3.5:闭包异常的序列化