2013-10-28 2 views
0

модель опекуны (отношение)данных не получает необходимые данные

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

Student реляционная модель:

'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, 
        )); 
     } 

Просьба указать мне правильный путь, что, как я мог бы выбрать тех студентов, у которых guardian_id = данный идентификатор в функции. Я новичок в yii. Спасибо.

ответ

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, чтобы убедиться, что действительное значение)

+0

В вашем определенном отношении вы написали отношение «опекун»? с выражением «через». –

+0

Моя опечатка должна быть «studentsGuardians» (например, имя отношения, которое вы получили между моделью «Студент» и «Студенческий опекун») –

Смежные вопросы