【发布时间】:2011-12-02 16:46:23
【问题描述】:
我有几个与其他模型有关系的学说模型。让我们称之为ItemsOne、ItemsTwo、ItemsThree。每个都有定义到Products 学说类(产品表)的关系,关系定义为:
$this->hasMany(
'Models_Products as Products',
array(
'local' => 'id',
'foreign' => 'product_id',
)
);
那里没有什么不寻常的地方。
我还有另一个存储命名空间数据的表 (prices)。我的意思是,特定表根据预定义的键(即Vinyl、CD、DVD)存储数据,因此行将显示如下内容:
media_namespace entity_id quantity unit_price
CD 4 1000 0.99
DVD 4 2500 1.25
CD 7 3750 0.25
Vinyl 15 75 4.25
entity_id 是访问此表的每个模型的 ID。例如CD/entity_id = 4 指的是ItemsOne 模型,DVD/entity_id = 4 指的是ItemsTwo 模型,等等。
我想创建一个关系 - 我不知道这是否可以完成 - 而它将在模型中命名。所以在上面剪断的产品关系中,我需要类似的东西(对于 ItemsOne 模型):
$this->hasMany(
'Models_Prices as Prices',
array(
'local' => 'id',
'foreign' => 'entity_id',
)
);
但是,以上将返回与entity_id 匹配的所有价格ItemsOne 表部分正确。在上面的示例中,如果entity_id = 4,它将返回CD 记录,但也会返回DVD,这不是我需要的。我希望它根据media_namespace 表过滤数据。所以简而言之,我需要的是:
prices.media_namespace = 'CD' AND prices.entity_id = itemsone.id
以上可以反映在 Doctrine 中的hasMany 关系中吗?我已经搜索过,但找不到有用的东西。
任何指针都非常感谢!
【问题讨论】:
标签: database namespaces doctrine relationships