2013-06-25 2 views
1

Je suis actuellement en train d'essayer d'afficher/récupérer des données de ma base de données en utilisant les relations de cadre Yii qui ont été générées automatiquement par Gii. (MANY_MANY)Utilisation de plusieurs à plusieurs relations dans yii

Modèle utilisateur contient:

return array(
     'memberOfTeams' => array(self::MANY_MANY, 'UsersTeam', '{{teamMembers}}(userId, teamId)'), 
    ); 

UserTeam Modèle contient:

return array(
     'teamMembers' => array(self::MANY_MANY, 'User', '{{teamMembers}}(teamId, userId)'), 
    ); 

Je travaille actuellement sur la vue de l'utilisateur appelé profile.php. Tout ce que j'essaie d'accomplir est d'afficher l'utilisateur actuel avec toutes les équipes qui lui sont assignées. TeamMembers contient teamId et userId.

Comment est-ce que j'écrirais cette requête?

Je actuellement ce

<?php echo CHtml::dropDownList("teamName", 'id', Chtml::listData(UsersTeam::model()->with('teamMembers')->findAll(teamMembers.userId, array($model->id)), 'id', 'teamName'),array('empty'=>'Select Team')); ?> 

Je suis en mesure d'obtenir toutes les informations si j'utilise findAll(), mais je ne veux que les équipes que l'utilisateur est affecté.

+0

On dirait que vous avez J'ai eu une bonne réponse de @Mtvw. Je recommande aussi vivement de naviguer sur les forums Yii si vous ne l'avez pas déjà fait: http://www.yiiframework.com/forum/ Bonne chance! – DaveyLaser

Répondre

2

Un projet de la mine fait quelque chose de similaire:

relation MANY_MANY entre le magasin et la carte, cette dataprovider permet d'afficher une liste des magasins liés à une carte spécifique:

$shopDataProvider=new CActiveDataProvider('Shop', 
      array(
       'criteria'=>array(
        'with'=>array('cardShop'), 
        'condition'=>'cardShop.card_id=:cardId', 
        'params'=>array(':cardId'=>$id), 
        'order'=>'t.id DESC', 
        'together'=>true, 
       ), 
      ) 
     ); 
Questions connexes