1

私は本当にYiiに不慣れです。私は3つのテーブルを持っています:

  1. Suppliers(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) には 1 つのサプライヤーと 1 つの製品があるため、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 に答える