2

我有三个模型:

// student_id student_name
Student extends ActiveRecord\Model
{
    static $has_many = array(
        array('studentcourses')
    );
}

// course_id course_name
Course extends ActiveRecord\Model
{
    static $has_many = array(
        array('students')
    );
}

// course_id student_id
Studentcourse extends ActiveRecord\Model
{
    static $belongs_to = array(
        array('student')
    );
}

因此,通过这样做,我将能够轻松地从这些表中检索数据:

$student = Student::find(1);

foreach ($student->studentcourses as $course)
{
    echo $course->name;
}

但是我不想输入“studentcourses”,我想输入 $student->courses 来获取学生参加的所有课程,并输入 $course->students 来获取特定课程的学生列表。关系设置将如何实现?

4

1 回答 1

5

我认为你需要的是多对多的关系。在 PHP-AR 中进行设置:

// student_id student_name
Class Student extends ActiveRecord\Model
{
    static $has_many = array(
        array('courses', 'through' => 'studentcourses'),
        array('studentcourses')
    );
}

// course_id course_name
Class Course extends ActiveRecord\Model
{
    static $has_many = array(
        array('students', 'through' => 'studentcourses'),
        array('studentcourses')
    );
}

// course_id student_id
Class Studentcourse extends ActiveRecord\Model
{
    static $belongs_to = array(
        array('student'),
        array('course')
    );
}

不要忘记studentcourses表必须包含:id(主键)、student_idcourse_id

于 2013-06-27T16:42:17.873 回答