$test = Mail::model()->find('destinataire_id = 370 and campagne_id = 34');
print_r($test->liens);die();
Je devrais donc voir apparaître un array avec les 2 valeurs de ma table (si je fais un print_r de $test il n’y a aucun soucis je vois bien mon objet Mail)
Les différentes relations que j’ai essayé avec les messages d’erreurs qui apparaissaient:
'liens' => array(self::MANY_MANY, 'Lien', 'lien_mail(destinataire_id, campagne_id)'),
La relation « liens » définie dans l'active record « Mail » a une clef étrangère incomplète. La clef étrangère doit être constituée des colonnes qui référence les deux tables.
------------------------------------
'liens' => array(self::MANY_MANY, 'Lien', 'lien_mail(lien_id,destinataire_id, campagne_id)'),
Array()
------------------------------------
'liens' => array(self::HAS_MANY, 'Lien', 'lien_mail(lien_id,destinataire_id, campagne_id)'),
Undefined offset: 2
/var/www/framework/1.1.15.022/db/ar/CActiveFinder.php(665)
------------------------------------
'liens' => array(self::HAS_MANY, 'Lien', 'lien_mail(destinataire_id, campagne_id)'),
CDbCommand n'a pas pu exécuter la commande SQL : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'liens.lien_mail(destinataire_id' in 'where clause'. The SQL statement executed was:
Ca permet de décomposer la relation et de voir si ça bloque qq part (je te conseille de faire un print_r sur $model->lienMails dans un premier temps, puis sur $model->liens).
Effectivement essayer d’afficher $model->lienMails avant d’afficher $model->liens m’a permis de cerner un peu mieux le problème. (et je ne connaissais pas l’attribut “through”)
Mais même le print_r de $model->lienMails renvoie un array vide.
Je n’ai pas pensé à le mentionner plus tôt mais j’ai utilisé Giix pour la création des modèle. (je ne pense pas que ça puisse être la cause du problème mais au cas où…) (Et non ce n’est pas tout bêtement un problème d’override des base modèle j’ai vérifié)
J’avais affiché les logs mais je n’ai rien trouvé de bien intéressant. Est-il possible d’afficher la requête SQL utilisé par Yii pour la création de ces relations? (histoire de voir le résultat sur le phpMyAdmin)
(j’avais abandonné cette piste car je ne comprenais pas trop d’où venait ce ‘t’ de ‘t.someOtherID’ dans la condition, et en plus personne n’avait répondu pour savoir si cela fonctionnait réellement)
Je viens de remettre la fonction mais aucun changement, toujours un array vide.
J’ai aussi essayé d’hérité de ActiveRecord au lieu de GxActiveRecord pour être sur que ça ne soit pas la surcouche giix qui pose problème (j’ai fait la modification sur les 3 modèles) mais toujours pareil.
J’ai bien regardé que je n’ai pas fait de faute dans les différentes valeurs mais ce n’est pas le cas.
Et de toute manière dès qu’il y a une erreur on se fait insulter par l’application, alors que la ça donne l’impression que cela marche mais qu’il n’y a pas de résultat dans ce sens (Mail -> LienMail)
Pourtant on peut bien faire le chemin inverse (LienMail -> Mail)
Pour tester mon modèle Mail j’ai ajouté une relation:
Cette syntaxe permet de spécifier précisément la relation entre la clé primaire et la clé étrangère et permet justement d’avoir un nom de clé différent en plis de gérer la clé multiple.