Ассоциация "многие ко многим" в CakePHP 3.x

У меня есть вопрос, который, кажется, повторяется, но это не так:

Я объясняю с небольшим примером.

У меня есть два стола: студенты и курсы.

Каждый студент может пройти N курсов, и каждый курс может пройти N студентов.

Я хочу, чтобы у студентов был доступ к курсам, а также к студентам по курсам.

EX:

1- Дайте мне список курсов, которые прошел студент с id=1.

2- Дайте мне список студентов, которые прошли курс с id=2000.

Если я использую ownToMany в классе StudentsTable, достаточно или я должен также определить hasMany или serveToMany в классе CoursesTable.

Скажи мне, что мне делать.

Заранее спасибо.

PS: я использую CakePHP 3.x

1 ответ

Как сказал Agam Banga в этой ссылке, мы должны использовать:

class StudentsTable extends Table
{
    public function initialize(array $config)
    {
        $this->belongsToMany('Courses', [
            'through' => 'CourseMemberships',
        ]);
    }
}

class CoursesTable extends Table
{
    public function initialize(array $config)
    {
        $this->belongsToMany('Students', [
            'through' => 'CourseMemberships',
        ]);
    }
}

class CoursesMembershipsTable extends Table
{
    public function initialize(array $config)
    {
        $this->belongsTo('Students');
        $this->belongsTo('Courses');
    }
}
Другие вопросы по тегам