我正在开发一个电子商务Symfony应用程序,但我一直在努力寻找一些有关如何创建从Doctrine中检索某些数据的实体的信息,以及一些来自外部源的实体。
这是一个网站,它将销售已经存在已有库存系统的实体店内可用的相同商品。
我目前的情况是,此应用程序需要能够从外部源(我们的店内库存系统的REST API)检索价格和库存信息,而大部分数据都由Doctrine处理。
例如,我有一个如下所示的Product类:
class Product
{
protected $id;
protected $title;
protected $description;
protected $quantity;
protected $price
}
我希望Doctrine可以处理前三个字段,就像任何其他实体一样(我已经设置了很多文档),但最后两个字段是基于任意数据源检索的(我们的后端数据的REST API,这需要能够随着商店的增长和后端的变化而改变)
最终,我希望这些产品实体可以从任何标准的学说查询中调用,并且所有字段都可以像任何其他实体一样完全可用。 (包括价格和数量)
我想知道是否有人可以建议如何在Symfony生态系统中解决这个问题。
此时我正在查看一个Doctrine postLoad事件订阅者,它在返回之前操纵实体,但我想知道这是否可行,以及如何构造代码来实现它。 (我猜我首先需要一个暴露“价格”服务的独立包,所以我可以做$ Service-> getPrice($ ProductID),然后我会在哪里放置getPrice调用?我觉得它不是属于实体类本身的东西(因为这个类的目的只是定义实体是什么,而不是如何制作实体),但这就是Doctrine docs似乎建议的那样)
我问了一个类似的问题here,但没有得到非常明确的回答,所以我希望简化问题可能有所帮助。
答案 0 :(得分:1)
我会创建一个服务来访问您的REST API数据,然后将其注入Doctrine EventSubscriber
。在该订阅者内部,我将处理postLoad
事件以从REST API加载数据。
此服务可以是现有捆绑包的一部分。