我正在开发一个电子商务Symfony2应用程序,我正试图找出如何组织我的模型以最适合我们正在做的事情。
我的问题是,此应用程序必须与实体店位置的库存系统连接,以检索库存和定价信息,但在Doctrine中存储与Web相关的数据。
所以我有一个产品对象:
class Product
{
protected $id;
protected $title;
protected $description;
protected $variants;
}
还有一个ProductVariant对象(用于精装/软皮书籍,不同尺寸的贴纸等产品。如果他们没有任何选择,产品会有"默认"变体):
class ProductVariant
{
protected $id;
protected $name; // "Hard Cover", IS persisted
protected $otherData; // Placeholder for other persisted data for a variant.
protected $price; // Not persisted in Doctrine
protected $quantity; // Not persisted in Doctrine
protected $backendID // The ID/SKU of this exact item in our backend database to look up prices
}
这些数据大部分将存储在Doctrine Entity(基本的Symfony东西)中,但我想知道在检索这些对象时如何引入其他数据。
我的理想目标是能够调用任何标准的Doctrine EM函数(find,findAll,findBy)并获取具有可用价格和数量的完整实体。
所以现在我认为我需要创建一个类似这样的ProductFactory(请注意,我正在急切地加载价格,因为我们基本上每次想要查看它们都需要它们一个产品):
$backendService = (A backend service from the Symfony DI container)
$em = (doctrine Product repo EM);
$product = $em->find($id);
foreach($product->getVariants() as $variant)
{
$backendData = $backendService->getData($variant->getBackendID());
// Possible caching of $backendData here? (currently it only updates once a day due to legacy constraints)
$variant->setPrice($backendData->getPrice());
$variant->setQuantity($backendData->getQuantity());
}
这个后端数据源将在明年发生变化,我们不知道如何从新系统中检索数据,因此将其作为服务构建似乎是有意义的,因为我可以稍后更改它以便创建它来自我们所拥有的任何新数据的一致BakendData对象。 1
但现在我有两个大问题:
和
当然,我将尝试从后端服务中尽可能多地缓存信息,但处理步骤仍然存在。
感谢你们给我的任何建议。
脚注