我在两个实体之间有一个非常简单的oneToMany
/manyToOne
关系:
一个Workflow
包含许多States
:
MyBundleEntityWorkflow:
type: entity
id:
id:
type: integer
generator: {strategy: AUTO}
oneToMany:
states:
targetEntity: MyBundleEntityState
mappedBy: workflow
orderBy:
stateOrder: ASC
cascade: [all]
orphanRemoval: true
fetch: EAGER
...
许多States
拿着一个Workflow
:
MyBundleEntityState:
type: entity
id:
id:
type: integer
generator: {strategy: AUTO}
manyToOne:
workflow:
targetEntity: MyBundleEntityWorkflow
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。
我还尝试了教义官方添加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';
所以排序依据不是查询的一部分...
任何建议为什么这不起作用?
这是一个已知的未解决的问题,orderBy
不能与fetch: EAGER
结合使用。因此,无论是删除fetch: EAGER
还是对教义集进行排序都可以解决问题。