【问题标题】:Symfony/Doctrine: Fetching entity fields from outside the databaseSymfony/Doctrine:从数据库外部获取实体字段
【发布时间】:2014-06-06 02:48:48
【问题描述】:

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

【问题讨论】:

标签: php symfony doctrine-orm


【解决方案1】:

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

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

【讨论】:

  • 好的,谢谢,我很高兴我在正确的轨道上,这似乎是一个非常直接的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
相关资源
最近更新 更多