Jeśli się nie mylę, nie potrzebujesz aby mySql wymuszał relacje kluczy obcych, aby nadal działały w Yii. Ustawienie ograniczeń FK w mySql zapewnia odpowiednią integralność bazy danych, ale nie sądzę, aby Yii faktycznie używał tego w czasie wykonywania.
Kiedy początkowo uruchamiam yiic (z Gii) do budowania projektu, myślę, że patrzy on na DB, aby zbudować właściwe relacje w modelu, ale potem ich nie używa.
Yii następnie wykorzystuje tę wiedzę (z yiic) o relacjach między tabelami, aby ułatwić Ci życie, zapewniając skrótowe metody dostępu do danych relacyjnych i aby upewnić się, że nie naruszasz ograniczeń mySql i nie otrzymujesz brzydkich błędów SQL itp. Ale nadal możesz używać Logika relacji Yii bez podstawowych ograniczeń SQL. Jedynym problemem będzie to, że jeśli Yii zepsuje się i przypisze nieistniejące FK lub coś, Twoja baza danych nie wykryje tego błędu (integralność danych będzie bardziej podatna na błędy).
Aby połączyć swoje produkty z działami, po prostu upewnij się, że masz pole id_działu w produkcie (wygląda na to, że masz). Następnie dodaj taką regułę relacji do produktu:
'department' => array(self::BELONGS_TO, 'Department', 'department_id'),
A w modelu Twojego działu:
'products' => array(self::HAS_MANY, 'Product', 'department_id'),
Teraz powinieneś być w stanie używać tej relacji jak zwykle:
$myProductModel->department; // returns the model of the Department referenced
$myDepartmentModel->products; // returns the models of all Products in the department
Powodzenia i daj mi znać, jeśli jestem daleko od bazy i to ci nie działa!