1

我想在 dataprovider 中使用这个查询

select user.username ,company_user.* from user left join company_user on company_user.user_id=user.id where company_user.company_id=".$id

如何在 CActiveDataProvider 中编写

请帮助我提前谢谢...

我有 3 个表
company_user ->id,company_id,user_id,first_name,last_name
company ->id,name_of_company
user ->id,username,password

我想要来自company_user的所有记录+ 来自用户的用户名

提前致谢...:)

我想在 CGridView 中列出

在我的用户模型中,我写了这种类型的关系

public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'company_user'          =>array(self::HAS_ONE,'CompanyUser','user_id','select' =>array('first_name','status'),
                                            'with'=>array('company'=>array(self::BELONGS_TO, 'Company', 'company_id','joinType' => 'INNER JOIN')),
                                    ),
            'company_user_rel_only' =>array(self::HAS_ONE,'CompanyUser','user_id','select' =>array('first_name', 'last_name')),
            
    }
4

1 回答 1

2

使用 Yii,您应该使用模型方法,这样应该可以:

$criteria = new CDbCriteria;
$criteria->with = 'user';
$criteria->compare('company_id', $id); //if error due to similar column name change it to t.company_id
$dataProvider =  new CActiveDataProvider('CompanyUser', array(
                     'criteria' => $criteria,
                 ));

我假设 CompanyUser 和 User 之间的关系名称是 user,如果不是,将 with 属性更改为正确的名称。此外,这将提供 CompanyUser 类型的对象,如果您想访问用户属性,请使用 ->user->username访问它们

于 2012-04-18T17:10:49.023 回答