1

このクエリをデータプロバイダーで使用したい

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 + username からのすべてのレコードが必要です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 に答える