Есть самописная ОРМ. На странице есть "товар" и внутри страницы "календарь", где можно добавлять разные точки времени.
При выборе точки времени и сохранения, в базе данных сохраняются измененные значения "товара", и "календаря", через связанную таблицу отдельно для календаря
Но почему-то не сохраняются значения "календаря" в базе данных. Значения "Товара" сохраняются.
Описание столбца "товара"
class GameModeTable extends DataManager {
public static function getMap(){
return [
new IntegerField('ID',[
'primary' => true,
'autocomplete' => true
]),
new BooleanField('CUSTOM_SCHEDULE_SELECT'),
(new OneToMany('CUSTOM_SCHEDULES', CustomScheduleTable::class, 'GAMEMODE'))->configureJoinType('left'),
];
}
}
Описание таблицы "календаря"
class CustomScheduleTable extends DataManager {
public static function getMap(){
return [
new IntegerField('ID',[
'primary' => true,
'autocomplete' => true
]),
(new IntegerField('GAMEMODE_ID'))->configurePrimary(true),
(new Reference(
'GAMEMODE',
GameModeTable::class,
Join::on('this.GAMEMODE_ID', 'ref.
ID')
))->configureJoinType('inner'),
(new IntegerField('DAY_NUMBER'))->configurePrimary(true),
(new IntegerField('TIME'))->configurePrimary(true),
(new DatetimeField('DATE'))->configurePrimary(true),
(new IntegerField('UNIQ'))->configurePrimary(true)
];
}
}
Само сохранения календаря происходит так:
foreach ($ob->shedules as $dayNumber => $arTimes){
foreach ($arTimes as $val){
$time = new CustomSchedule(false);
$time->setDayNumber($dayNumber)->setTime(\Helper::getMinutesByHourseString($val));
$time->setUniq(time());
$gameMode->addToSchedules($time);
}
}
Сохранение должно работать через $gameMode->addToCustomSchedules($time), но оно не сохраняется.
Также пробовал просто получить связанные поля "календаря" по GAMEMODE_ID ($gameMode->getCustomSchedules()), но всё равно ничего не выводится.
При этом, если просто делать getList() данной таблицы без какого-либо фильтра, то таблица "календарь" корректно вся выводится.
В чём может быть ошибка? Почему не работает связь таблиц? $gameMode->getCustomSchedules() по идее должно выбирать те точки "календаря", которое соответсвует выбранному $gameMode (в переменной $gameMode хранится выбранный товар, сделанный getList'ом через таблицу GameModeTable )
Сама таблица товара
Сама таблица календаря: