1

我对 Yii 真的很陌生。我有 3 张桌子:

  1. 供应商(sid,sname)//pk -> sid,
  2. Products(pid, pname) //pk -> pid,
  3. IncomingProducts(pid, sid, qty) //pk -> (pid, sid)

我想在表中形成一个关系,IncomingProducts以便我可以一次检索以下信息:(pname,sname,qty)。

所有这些信息都应该基于表格IncomingProducts。有什么帮助吗?

4

2 回答 2

1

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'),
    );
}
于 2012-10-02T06:22:58.460 回答
0

我假设供应商和产品之间存在多对多的关系。在 IncomingProducts 中,您可以定义如下关系,

public function relations()
{
    return array(
        'suppliers' => array(self::HAS_MANY, 'Suppliers', 'sid'),
        'products' => array(self::HAS_MANY, 'Products', 'pid'),
    );
}

你可以在这里阅读更多关于 Yii 的关系活动记录

于 2012-10-02T01:35:47.443 回答