2

私は3つのモデルを持っています:

// 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_id、およびcourse_idが含まれている必要があることを忘れないでください。

于 2013-06-27T16:42:17.873 に答える