Php 以多对多和一对多关系访问数据

Php 以多对多和一对多关系访问数据,php,yii,Php,Yii,我不知道如何访问相关表(带有ActiveRecords)中的数据,并将所有这些记录用作CActiveDataProvider的数据源。其主要思想是,用户必须能够CRUD`只对其课程进行修改 我有以下表格: user (id, name, age, email...), user_class (user_id, class_id), class (id, name, description, ...), course (id, class_id, name, description); 用户表和

我不知道如何访问相关表(带有ActiveRecords)中的数据,并将所有这些记录用作CActiveDataProvider的数据源。其主要思想是,用户必须能够CRUD`只对其课程进行修改

我有以下表格:

user (id, name, age, email...),
user_class (user_id, class_id),
class (id, name, description, ...),
course (id, class_id, name, description);
用户表和班级表具有多对多关系,班级表和课程表具有一对多关系

我还定义了以下关系:

'classes'=>array(
    self::MANY_MANY,
    'Class',
    'user_class(user_id, class_id)',
    ),
'courses'=>array(
    self::HAS_MANY,
    'Course',
    array('class_id','id'),
    'through'=>'classes'
)
'class' => array(
    self::BELONGS_TO,
    'Class',
    'class_id'
)
用户模型关系:

'classes'=>array(
    self::MANY_MANY,
    'Class',
    'user_class(user_id, class_id)',
    ),
'courses'=>array(
    self::HAS_MANY,
    'Course',
    array('class_id','id'),
    'through'=>'classes'
)
'class' => array(
    self::BELONGS_TO,
    'Class',
    'class_id'
)
类模型关系:

'users' => array(
    self::MANY_MANY,
    'User',
    'user_class(class_id, user_id)'
),
'courses' => array(
    self::HAS_MANY,
    'Class',
    'class_id'
),
课程模式关系:

'classes'=>array(
    self::MANY_MANY,
    'Class',
    'user_class(user_id, class_id)',
    ),
'courses'=>array(
    self::HAS_MANY,
    'Course',
    array('class_id','id'),
    'through'=>'classes'
)
'class' => array(
    self::BELONGS_TO,
    'Class',
    'class_id'
)
在我的
CourseController
中,在
actionManage()
上,我有如下内容:

public function actionManage() {
    $currentUser = User::model()->with('classes', 'courses')->findByPk(Yii::app()->user->id);
    $userCourses = $currentUser->classes->courses; //--> NO courses!!!
    /* add users` courses to an CActiveDataProvider //--> how to do this?!
}

如果您尝试
var\u转储($currentUser->classes)您会注意到它是一个数组


$userCourses=$currentUser->classes[0]->课程$currentUser


由于您正在缓慢地加载许多内容(每个“类”在第一次被请求时加载其“课程”),这可能会使速度减慢,但现在,我想还是用它来运行吧。

$userCourses=$currentUser->classes->courses
不起作用,因为
$userCourses=$currentUser->classes
返回一个数组,因此与
课程之间没有关系
“这可能会成为慢行”,我如何改进它?任何例子/链接都很好。