@krispey

ORM bitrix не работают связанные поля?

Есть самописная ОРМ. На странице есть "товар" и внутри страницы "календарь", где можно добавлять разные точки времени.
При выборе точки времени и сохранения, в базе данных сохраняются измененные значения "товара", и "календаря", через связанную таблицу отдельно для календаря
Но почему-то не сохраняются значения "календаря" в базе данных. Значения "Товара" сохраняются.
Описание столбца "товара"
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 )

Сама таблица товара
6127839cf07ae768945232.png

Сама таблица календаря:
612783cb30442391538594.png
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы