Symfony / Doctrine:从数据库外部获取实体字段

时间:2014-04-21 23:10:08

标签: php symfony doctrine-orm

我正在开发一个电子商务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,但没有得到非常明确的回答,所以我希望简化问题可能有所帮助。

1 个答案:

答案 0 :(得分:1)

我会创建一个服务来访问您的REST API数据,然后将其注入Doctrine EventSubscriber。在该订阅者内部,我将处理postLoad事件以从REST API加载数据。

此服务可以是现有捆绑包的一部分。