我正在学习Symfony,而我正试图找出将自定义操作放在实体上的位置...
例如,如果我有一个实体Order
,那么放置$order->complete()
的位置?或$order->sendToProduction()
,$order->queueForDelivery()
?
这些只是示例,我有复杂的实体,我必须对它们执行许多操作。
在控制器中?
在实体中?
在EntityController中?
还有什么?我必须创建服务吗?实用类?
答案 0 :(得分:7)
如果工作可以在一个信号实体(当然还有它的关系)内完成,那么它应该放在那里。我的意思是,如果操作是关于改变实体的内部状态。
否则,如果这个工作需要使用数据库等应用程序的其他部分,或者是在多个不相关的实体上执行,那么我建议使用services。
那是什么。服务基本上是一个可以做任何事情的类。使用Service容器,您可以将任何依赖项传递给它,因此它非常灵活且易于使用。
例如$order->queueForDelivery()
。这可能意味着一些不同的事情:
status
更改为queued_for_delivery
- 然后它应该在Order
实体类$order
应该放在其他实体类的Queue
中,然后它应该在Queue
类中$queue->addOrder($order)