1

私はyiiから始めています。

次のDB構造があります。

Table:             Rows:

user               [id,login,password,name,email]
userToProject      [user_id,project_id,role]
project            [id,name,status]

そして、 status=3のプロジェクトで作業しているすべてのユーザーをrole=managerとして取得したいと考えています。ところで、これは私のコードです。プロジェクトのステータスに到達するには、2 番目の参加を行う必要があります。

$criteria=new CDbCriteria;
$criteria->join='INNER JOIN {{userToProject}} a ON t.id=a.user_id and a.role='.Role::MANAGER;
$criteria->distinct=true;
return User::model()->findAll($criteria);

基準で作成できますか、それとも SQL コマンドを実装して実行する必要がありますか?

ありがとう

4

1 に答える 1

5

さて、あなたはこのようにuserToProjectモデルで関係を作ります...

'user'=>array(self::BELONGS_TO, 'User', 'user_id')

 //  after belongs_to User is a model class name..

'project'=>array(self::BELONGS_TO, 'Project', 'project_id'),

 //  after belongs_to Project is a model class name..

次に、..のようなアクティブレコードを使用します。

$allrecord =  UserToProject::model()->with('user','project')->findAll(
                               'status = :status AND role = :role',
                                array(':status' => 3 , 'role' => 'manager'));

//in with bracket user , project is your relation name..

これで、$ allrecordに、すべてのレコードが配列形式で表示されます。

于 2012-05-18T05:15:44.803 に答える