我对Yii真的很陌生。我有3个表:Yii餐桌关系
- 供应商(SID,SNAME)// PK - > SID,
- 产品(PID,PNAME)// PK - > PID,
- IncomingProducts(PID,SID,数量)// PK - >(PID,SID)
我想形成表IncomingProducts
,这样我可以检索以下信息立刻关系:(PNAME,SNAME,数量)。
所有这些信息都应基于表IncomingProducts
。 有什么帮助吗?
我对Yii真的很陌生。我有3个表:Yii餐桌关系
我想形成表IncomingProducts
,这样我可以检索以下信息立刻关系:(PNAME,SNAME,数量)。
所有这些信息都应基于表IncomingProducts
。 有什么帮助吗?
我假设供应商和产品之间有多对多的关系。在IncomingProducts,您可以定义关系如下,
public function relations()
{
return array(
'suppliers' => array(self::HAS_MANY, 'Suppliers', 'sid'),
'products' => array(self::HAS_MANY, 'Products', 'pid'),
);
}
你可以阅读更多关于Yii中的关系活动记录here
IncomingProducts必须包含ID - > PK场,因为它可以包含具有相同的许多纪录(pid,sid)对。
而且任何记录(ID,PID,SID,数量)有一个Suplier和一个产品,所以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'
不应该工作(您需要指定包含'Supliers.sid'的'IncomingProducts'的关键字)。关于使用“FK” =>“pk”中的关系,你可以在这里阅读:http://www.yiiframework.com/doc/api/1.1/CActiveRecord#relations-detail
你可以得到所有产品来料任何suplier在Supliers模型关系:
public function relations()
{
return array(
'incoming' => array(self::HAS_MANY, 'IncomingProducts', 'sid'),
);
}
您需要命名的主键列' ID'..你不能有SID,或PID.AS PK。 –
@RajatSinghal是的,你可以使用复合主键。虽然这会限制IncomingProducts表中的产品/供应商组合的数量,但由于每个产品/供应商组合不能有多个记录 – Stu