我对 Yii 真的很陌生。我有 3 张桌子:
- 供应商(sid,sname)//pk -> sid,
- Products(pid, pname) //pk -> pid,
- IncomingProducts(pid, sid, qty) //pk -> (pid, sid)
我想在表中形成一个关系,IncomingProducts
以便我可以一次检索以下信息:(pname,sname,qty)。
所有这些信息都应该基于表格IncomingProducts
。有什么帮助吗?
我对 Yii 真的很陌生。我有 3 张桌子:
我想在表中形成一个关系,IncomingProducts
以便我可以一次检索以下信息:(pname,sname,qty)。
所有这些信息都应该基于表格IncomingProducts
。有什么帮助吗?
IncomingProducts 必须包含 id->pk 字段,因为它可以包含许多具有相同 (pid, sid) 对的记录。
并且任何记录(id、pid、sid、qty)都有一个供应商和一个产品,所以 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
您可以获取与供应商模型中的关系的任何供应商的所有传入产品:
public function relations()
{
return array(
'incoming' => array(self::HAS_MANY, 'IncomingProducts', 'sid'),
);
}
我假设供应商和产品之间存在多对多的关系。在 IncomingProducts 中,您可以定义如下关系,
public function relations()
{
return array(
'suppliers' => array(self::HAS_MANY, 'Suppliers', 'sid'),
'products' => array(self::HAS_MANY, 'Products', 'pid'),
);
}
你可以在这里阅读更多关于 Yii 的关系活动记录