Ассоциация "многие ко многим" в 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');
}
}