phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Possible de réparer une clé étrangère dans Yii sans l'avoir configurée dans la base de données ?

Si je ne me trompe pas, vous n'avez pas besoin pour que mySql applique des relations de clé étrangère pour qu'ils fonctionnent toujours dans Yii. La configuration des contraintes FK dans mySql garantit une bonne intégrité de la base de données, mais je ne pense pas que Yii l'utilise réellement lors de l'exécution.

Lors de la première exécution de yiic (de Gii) pour construire le projet, je pense qu'il regarde la base de données pour construire les bonnes relations dans le modèle, mais il ne les utilise pas après cela.

Yii utilise ensuite cette connaissance (de yiic) des relations de table pour vous faciliter la vie en fournissant des méthodes de raccourci pour accéder aux données relationnelles, et pour vous assurer de ne pas violer les contraintes mySql et d'obtenir de vilaines erreurs SQL, etc. Mais vous pouvez toujours utiliser Logique de relation Yii sans les contraintes SQL sous-jacentes. Le seul problème sera que si Yii se trompe et attribue un FK inexistant ou quelque chose du genre, votre base de données ne détectera pas cette erreur (l'intégrité de vos données sera plus sujette aux erreurs).

Pour lier vos produits aux départements, assurez-vous simplement d'avoir un champ department_id dans le produit (ce qui semble être le cas). Ajoutez ensuite une règle de relation comme celle-ci à Product :

'department' => array(self::BELONGS_TO, 'Department', 'department_id'),

Et dans votre modèle Département :

'products' => array(self::HAS_MANY, 'Product', 'department_id'),

Vous devriez maintenant pouvoir utiliser la relation comme d'habitude :

$myProductModel->department; // returns the model of the Department referenced
$myDepartmentModel->products; // returns the models of all Products in the department

Bonne chance, et faites-moi savoir si je suis loin de la base et que cela ne fonctionne pas pour vous !