Если я не ошибаюсь, вам не нужно , чтобы mySql принудительно устанавливал отношения внешнего ключа, чтобы они по-прежнему работали в Yii. Установка ограничений FK в mySql обеспечивает надлежащую целостность базы данных, но я не думаю, что Yii на самом деле использует это во время выполнения.
При первоначальном запуске yiic (из Gii) для построения проекта, я думаю, что он смотрит на БД для построения правильных отношений в Модели, но не использует их после этого.
Затем Yii использует эти знания (из yiic) о связях таблиц, чтобы упростить вашу жизнь, предоставляя методы быстрого доступа для доступа к реляционным данным, и чтобы вы не нарушали ограничения mySql и не получали уродливые ошибки SQL и т. Д. все еще может использовать логику отношений Yii без базовых ограничений SQL. Единственная проблема будет в том, что если Yii испортит и назначит несуществующий FK или что-то еще, ваша база данных не поймает эту ошибку (ваша целостность данных будет более подвержена ошибкам).
Чтобы связать ваши продукты с отделами, просто убедитесь, что у вас есть поле отдела_идентификатора в Продукте (что звучит так же, как и у вас). Затем добавьте правило отношения, например, в Product:
'department' => array(self::BELONGS_TO, 'Department', 'department_id'),
А в вашем отделе модель:
'products' => array(self::HAS_MANY, 'Product', 'department_id'),
Теперь вы сможете использовать отношение как обычно:
$myProductModel->department; // returns the model of the Department referenced
$myDepartmentModel->products; // returns the models of all Products in the department
Удачи, и дайте мне знать, если я далеко от базы, и это не сработает для вас!