【发布时间】:2016-06-10 07:01:39
【问题描述】:
我正在学习 Symfony,我正在尝试找出将自定义操作放在实体上的位置...
例如,如果我有一个实体Order,那么将$order->complete() 放在哪里?还是$order->sendToProduction()、$order->queueForDelivery()?
这些只是示例,我有复杂的实体,我必须对它们执行许多操作。
在控制器中?
- 不,因为可能会从不同的控制器调用相同的操作
在实体中?
- 这将是 MVC 模型中更合适的方式,但在这里我找不到从 Entity 类内部执行自定义 mysql 查询(doctrine/em 不可用)的简单方法,因为 db 我觉得这很奇怪操作应该在实体级别执行,我相信......
在实体控制器中?
- 这似乎不太合适,例如从侦听器调用存储库方法并直接在对象上调用它们并不容易......
还有什么?我必须创建服务吗?实用程序类?
【问题讨论】:
-
"这将是 MVC 模型中更合适的方式,但在这里我找不到从 Entity 类内部执行自定义 mysql 查询(doctrine/em 不可用)的简单方法,我觉得很奇怪,因为数据库操作应该在实体级别执行,我相信“不,实体(或模型)应该与您的存储引擎完全分离。实际上,他们应该与其他任何事物脱钩,并且应该能够单独生活。