Orm 条令:这是关系还是自定义数据检索?

Orm 条令:这是关系还是自定义数据检索?,orm,doctrine-orm,entity,relationships,Orm,Doctrine Orm,Entity,Relationships,我有一个名为product的实体,其中有两个字段,分别是Manufacturer和PartNumber。另一个名为SupplierProduct的实体也包含这两个字段(以及其他字段)。检索产品时,我希望检索与所查看产品具有相同制造商和零件号的所有供应商产品,并且能够通过产品对象中的字段访问此集合 这是一种条令关系(某种形式的一对多?),如果是,我将如何通过注释设置它?如果没有,我假设我必须手动检索数据并将供应商产品集合设置为产品?重要的是,Manufacturer和partno不是产品实体上的主

我有一个名为product的实体,其中有两个字段,分别是Manufacturer和PartNumber。另一个名为SupplierProduct的实体也包含这两个字段(以及其他字段)。检索产品时,我希望检索与所查看产品具有相同制造商和零件号的所有供应商产品,并且能够通过产品对象中的字段访问此集合


这是一种条令关系(某种形式的一对多?),如果是,我将如何通过注释设置它?如果没有,我假设我必须手动检索数据并将供应商产品集合设置为产品?重要的是,Manufacturer和partno不是产品实体上的主键,它们必须是指定联接列的主键。

据我所知,原则2并不直接支持这种复合关系

您可以创建一个ManufacturerPartNumberEntity,其中包含product、supplierProduct、manufacturer、partnumber字段。然后,您可以使用该实体链接产品和产品供应商。保持同步可能有点麻烦,也有点多余,但它允许快速查询

您甚至可以从产品/供应商产品实体中删除制造商和零件号。当然,这完全取决于你需要你的模型做什么


仅仅做一个额外的查询可能是你最好的选择。除其他外,这意味着产品可能在一个数据库中,而供应商产品可能在另一个数据库中。

我选择调用另一个findby(数组('manufacturer'=>'…','part_no'=>'…'))调用供应商产品,但每次创建产品实体时都必须这样做是很烦人的。我是否能够覆盖自定义存储库中的所有findby以注入附加查询?不太可能。但问问自己,为什么每次加载产品时都要加载SupplierProduct?我怀疑您可能会重构des冗余信息应该总是引起注意。经过考虑,重构确实是必要的,也是限制因素。谢谢!