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'),
);
}