在yii中使用多对多关系

时间:2013-06-25 18:20:36

标签: php yii many-to-many relation gii

我目前正在尝试使用由Gii自动生成的Yii框架关系来显示/检索数据库中的数据。 (MANY_MANY)

用户模型包含:

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

UserTeam Model包含:

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

目前我正在处理名为profile.php的用户视图。我想要完成的只是显示分配给他的所有团队的当前用户。

teamMembers包含teamId和userId。

我该如何撰写此查询?

我目前有这个

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

如果我使用findAll(),我可以获得所有信息,但我只想要分配用户的团队。

1 个答案:

答案 0 :(得分:2)

我的一个项目做了类似的事情:

商店和卡之间的MANY_MANY关系,此数据提供者用于显示链接到特定卡的商店列表:

$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,
                ),
            )
        );