Yii jointure gauche en CDbCriteria
Ai deux tables:
Contenu
id | text
------------
1 | text1
2 | text2
3 | text3
4 | text4
Photos
id | content_id | src
-----------------------------
1 | 1 | img1.png
2 | 1 | img2.png
3 | 2 | img3.png
4 | 3 | img1.png
Essayer d'obtenir un contenu avec la gauche rejoint les photos de la troisième contrôleur.
Mon code:
$oDBC = new CDbCriteria();
$oDBC->select = 't.*,p.*';
$oDBC->join = 'LEFT JOIN photos p ON t.id = p.content_id';
$oDBC->condition = 't.step_id = "'.$model->id.'"';
$content = Content::model()->find($oDBC);
Dans ContentController ajout de la fonction:
public function relations()
{
return array('photos' => array(self::HAS_MANY, 'Photos', 'content_id');
}
Mais print_r($content)
renvoie uniquement les données de contenu, sans photos de données.
Comme dans cette réponse, j'ai essayé:
print_r($content->photos);
mais il a obtenu Property "Content.photos" is not defined.
Ce que je fais mal?
- ajout d'une fonction dans contentcontroller? il devrait être dans le modèle de contenu
- Ahhh, j'ai perdu la moitié de la journée sur cette. Merci! Veuillez l'ajouter comme réponse et je vais le marquer solution.
Vous devez vous connecter pour publier un commentaire.
Vous avez ajouté la fonction de relations dans le mauvais endroit. Il doit être ajouté à la
Content
modèle, et pasContentController
:Si vous avez généré votre modèle avec Gii, puis la fonction de relations devrait déjà être là.