0

ガーディアンモデル:(関係)

'studentsGuardians' => array(self::HAS_MANY, 'StudentsGuardian', 'guardian_id'),

学生モデル関係:

'studentsGuardians' => array(self::HAS_MANY, 'StudentsGuardian', 'student_id'),

学生保護者モデル関係:

'guardian' => array(self::BELONGS_TO, 'Guardian', 'guardian_id'),
                        'student' => array(self::BELONGS_TO, 'Student', 'student_id'),

コントローラーで、guardian_id=id の学生を選択したいのですが、私のコードはフィルタリングせずにすべてのレコードを選択します。私のコードは

public function actionAssignGuardian($id)
        {

            $dataProvider = new CActiveDataProvider('Student',
                                array(
                                    'criteria' => array(
                                        'with'=>array('studentsGuardians',
                                            array('criteria'=>
                                            array('with'=>array('guardian','condition'=>' guardian_id=:id',
                                                'params'=>array('id'=>$id))))),

                                    ),

                                    ));



            $this->renderPartial('Pages/_assignGuardian', array(
                'dataProvider' => $dataProvider,
                'id'=>$id,
                    ));
        }

関数で指定されたidをguardian_id =にする学生を選択するにはどうすればよいか、正しい方法を教えてください。私はyiiが初めてです。ありがとう。

4

1 に答える 1

0

この線をモデルに追加しStudentます (前の関係線の下studentsGuardians)

'guardians' => array(self::HAS_MANY, 'Guardian', array('guardian_id'=>'guardian_id'),'through'=>'studentsGuardians'),

次に、このようなクエリを実行できます

$dataProvider = new CActiveDataProvider('Student',
            array(
                'criteria' => array(
                    'with'=>array(
                        'guardians' =>array(
                            'condition'=>' guardian_id=:id',
                            'params'=>array('id'=>$id)
                        )))    
            ));

$id(有効な値であることを確認するためにもダンプする必要があります)

于 2013-10-28T09:12:20.473 に答える