Я бы просто использовал belongTo
с моделью расписания и hasOne
с местоположением и моделью курса.
Это как для курса, так и для местоположения.
class Course extends Model
{
public $hasOne = [
'schedule' => ['Author\Plugin\Models\Schedule']
];
}
class Location extends Model
{
public $hasOne = [
'schedule' => ['Author\Plugin\Models\Schedule']
];
}
Это для расписания
class Schedule extends Model
{
public $belongsTo = [
'course' => ['Author\Plugin\Models\Course'],
'location' => ['Author\Plugin\Models\Location']
];
}
И тогда вам нужно будет добавить только course_id
и location_id
столбцы в таблицу расписания. Затем вы можете получить доступ к записи курса и записи местоположения через запись расписания или любым другим способом.
Экспериментальный - я никогда не пробовал это
Возможно, вы сможете укажите таблицу отношений «многие ко многим» в этом случае course_location
в различных отношениях, и это может сработать.
class Course extends Model
{
public $hasOne = [
'schedule' => ['Author\Plugin\Models\Schedule', 'table' => 'course_location']
];
}
class Location extends Model
{
public $hasOne = [
'schedule' => ['Author\Plugin\Models\Schedule', 'table' => 'course_location']
];
}
class Schedule extends Model
{
public $belongsTo = [
'course' => ['Author\Plugin\Models\Course', 'table' => 'course_location'],
'location' => ['Author\Plugin\Models\Location', 'table' => 'course_location']
];
}