phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Possível Corrigir uma Chave Estrangeira no Yii sem tê-la configurado no Banco de Dados?


Se não me engano, você não precisa ter mySql impondo relacionamentos de chave estrangeira para que eles ainda funcionem no Yii. Configurar restrições FK no mySql garante a integridade adequada do banco de dados, mas não acho que o Yii realmente use isso em tempo de execução.

Ao executar inicialmente o yiic (do Gii) para construir o projeto, acho que ele olha para o banco de dados para construir as relações corretas no modelo, mas não as usa depois disso.

O Yii então usa esse conhecimento (do yiic) dos relacionamentos das tabelas para facilitar sua vida fornecendo métodos de atalho para acessar dados relacionais e para garantir que você não viole as restrições do mySql e obtenha erros de SQL feios, etc. Mas você ainda pode usar Lógica de relação Yii sem as restrições SQL subjacentes. O único problema será que se o Yii errar e atribuir um FK inexistente ou algo assim, seu banco de dados não detectará esse erro (sua integridade de dados será mais propensa a erros).

Para vincular seus produtos a departamentos, apenas certifique-se de ter um campo department_id no Product (que parece que você tem). Em seguida, adicione uma regra de relação assim ao Produto:
'department' => array(self::BELONGS_TO, 'Department', 'department_id'),

E no seu modelo de Departamento:
'products' => array(self::HAS_MANY, 'Product', 'department_id'),

Agora você deve ser capaz de usar a relação normalmente:
$myProductModel->department; // returns the model of the Department referenced
$myDepartmentModel->products; // returns the models of all Products in the department

Boa sorte, e deixe-me saber se eu estou fora da base e não funciona para você!