Несколько вещей для начала:
- Я думаю, это должно быть
$model->courses
вместо $model->courses()
- Причина, по которой все равно не работает, состоит в том, что AR-отношения Yii возвращают массив объектов, а не фактический объект DataProvider
Во всяком случае, я помню, что тоже боролся с этим. Я никогда не заставлял его работать так, как я хотел. Самое близкое, что я получил, - это установил переменную data в моем dataProvider, но затем в моем ListView была разбита страница. Это сработало примерно так:
$dataProvider=new CActiveDataProvider('Course', array(
'data'=>$model->courses,
));
В итоге я создал новые критерии для передачи в мой DataProvider, который делал то же самое, что и отношение. Вот так:
$criteria=new CDbCriteria;
$criteria->join = "JOIN student_course_relation_table sc ON sc.course_id = t.id";
$criteria->compare('sc.student_id',$model->id);
$dataProvider=new CActiveDataProvider('Course', array(
'criteria'=>$model->courses,
));
Я предполагаю, что вы используете отношение MANY_MANY с таблицей соединений. Я надеюсь, что это поможет, хотя я уверен, что это не совсем то, что вы хотите сделать. Если у кого есть лучшее решение, пожалуйста, поделитесь! Я тоже хочу узнать об этом! :)