Pokud se nepletu, nepotřebujete mít mySql, který pro ně vynucuje vztahy s cizím klíčem, aby stále fungoval v Yii. Nastavení omezení FK v mySql zajišťuje správnou integritu databáze, ale nemyslím si, že to Yii ve skutečnosti za běhu používá.
Při počátečním spuštění yiic (z Gii) k vytvoření projektu si myslím, že se dívá na DB, aby vytvořil správné vztahy v modelu, ale poté je nepoužívá.
Yii pak použije tyto znalosti (z yiic) o vztazích mezi tabulkami, aby vám usnadnil život tím, že poskytuje metody zkratek pro přístup k relačním datům a aby zajistil, že neporušíte omezení mySql a nedostanete ošklivé chyby SQL atd. Stále však můžete používat Logika vztahů Yii bez základních omezení SQL. Jediný problém bude v tom, že pokud se Yii pokazí a přiřadí neexistující FK nebo něco podobného, vaše databáze tuto chybu nezachytí (integrita vašich dat bude náchylnější k chybám).
Chcete-li propojit své produkty s odděleními, ujistěte se, že máte v produktu pole department_id (což zní jako vy). Potom přidejte podobné pravidlo vztahu do Product:
'department' => array(self::BELONGS_TO, 'Department', 'department_id'),
A ve vašem modelu oddělení:
'products' => array(self::HAS_MANY, 'Product', 'department_id'),
Nyní byste měli být schopni použít vztah jako normální:
$myProductModel->department; // returns the model of the Department referenced
$myDepartmentModel->products; // returns the models of all Products in the department
Hodně štěstí a dejte mi vědět, pokud jsem hodně mimo základnu a nebude vám to fungovat!