我对Yii真的很陌生。我有3张桌子:
我想在表IncomingProducts
中形成一个关系,以便我可以一次检索以下信息:(pname,sname,qty)。
所有这些信息都应基于表格IncomingProducts
。
有帮助吗?
答案 0 :(得分:1)
IncomingProducts必须包含id-> pk字段,因为它可以包含许多具有相同(pid,sid)对的记录。
任何记录(id,pid,sid,qty)都有一个Suplier和一个Product,因此IncomingProducts模型的关系是:
public function relations()
{
return array(
'supplier' => array(self::HAS_ONE, 'Suppliers', array('sid'=>'sid')),
'product' => array(self::HAS_ONE, 'Products', array('pid'=>'pid')),
);
}
不确定FK - array('sid'=>'sid')
,但认为'sid'
不起作用(您需要指定'IncomingProducts'的键,其中包含'Supliers.sid')。关于使用'fk'=>'pk'关系,您可以在此处阅读:http://www.yiiframework.com/doc/api/1.1/CActiveRecord#relations-detail
您可以在Supliers模型中获取所有相关产品的所有传入产品:
public function relations()
{
return array(
'incoming' => array(self::HAS_MANY, 'IncomingProducts', 'sid'),
);
}
答案 1 :(得分:0)
我假设供应商和产品之间存在多对多的关系。在IncomingProducts中,您可以按如下方式定义关系
public function relations()
{
return array(
'suppliers' => array(self::HAS_MANY, 'Suppliers', 'sid'),
'products' => array(self::HAS_MANY, 'Products', 'pid'),
);
}
您可以阅读有关Yii的关系活动记录here
的更多信息