2009-09-26 7 views

Répondre

3

À moins que vous ne créiez un modèle pour la table entre les deux tables principales, votre seule option consiste à utiliser DAO (Database Access Object) et à spécifier des SQL avec celui-ci. Jetez un oeil à la façon dont la démonstration de blog accomplit cette tâche.

0

vous pouvez définir que dans MySQL level..by va à la vue relationnelle sous chaque table dans phpMyAdmin et assurer une utilisation de condition..and relationnelle nécessaire MANY_MANY dans la classe modèle relations à l'intérieur ..

1

l'extension suivante fait ce que vous voulez ... Yii Framework - Extension: cadvancedbehavior

Une chose importante à noter: sur chaque mise à jour, l'extension efface tous les enregistrements précédents et crée de nouveaux. Donc, je ne l'utiliserais pas lorsque la table intermediatry contient des données supplémentaires autres que les clés étrangères.

0

La question est trop commune.

Généralement, les composants de données ayant des relations MANY to BEY apparaissent séquentiellement et indépendamment. Il suffit donc de faire une action d'insertion après l'autre.

Si votre relation nécessite une mise à jour dépendante, vous devez user SQL triggers au niveau de la base de données. Cela garantira l'intégrité des données et donnera une assez bonne séparation dans la logique métier de l'application.

CREATE TRIGGER some_trigger 
    AFTER UPDATE ON some_table 
    ... 
END IF; 

d'une manière similaire à-incapsulate données relationnelles en un seul modèle logique au niveau de PHP (et par exemple manipuler avec 2-3 modèles AR-bas) et à imiter SQL déclenche logique en elle.

+0

Les déclencheurs sont horribles pour la maintenance. D'abord, vous pourriez envisager d'utiliser les bases de données FK et les cascades ... les déclencheurs pourraient être la dernière option. – armandomiani

+1

Vous devez être en train de plaisanter, n'est-ce pas? Les cascades de FK sont en effet déclencheurs! Mais vous ne pouvez pas les utiliser "sur insert". De plus, le moteur MyIsam de MySql ne prend pas en charge les FKs, par ex. En ce qui concerne la maintenance, je ne sais pas quel est le problème pour maintenir une procédure DB, surtout si c'est un trivial (et est semblable à une cascade FK) –

Questions connexes