RedbeanPHP Отношение «многие ко многим» - странное поведение - PullRequest
0 голосов
/ 16 января 2019

Я использую RedbeanPHP для своего уровня БД, и у меня есть связь между многими из двух таблиц.

Таблицы:

  • kioskmodels
  • компоненты

Где киоскмодели могут иметь несколько компонентов в модели 1. В настоящее время я не позволяю RedbeansPHP плавно добавлять / удалять таблицы БД. Мне нравится иметь ручной контроль над этим.

Итак, у меня есть таблица с именем: kioskmodels_components с 2 столбцами; 1. kioskmodels_id 2. component_id

Проблема, когда я добавляю новую запись в киоск-модели, используя функцию выдачи, как показано ниже:

if(!$this->isEdit()) $kiosk_model = R::dispense('kioskmodels');

$kiosk_model->import($this->getValidation()->data['kioskmodels']);

if(!empty($this->getValidation()->data['components'])) {
    $kiosk_model->sharedComponentsList = $this->getValidation()->data['components'];
}

R::begin();

try {
    R::store($kiosk_model);
    R::commit();
} catch(\Exception $e) {
    R::rollback();
    throw $e;
}

Что происходит, когда я добавляю новую запись, я выдаю новый компонент киоскмодели. Если он редактирует существующую запись, R :: load используется ранее.

Однако при вставке новой киоскмодели и связывании ее с компонентами она хочет использовать таблицу с именем "components_kioskmodels". Когда это произошло, я согласился с этим и изменил таблицу БД, чтобы она соответствовала этому.

Однако, когда я протестировал настройку редактирования, он захотел использовать «kioskmodels_components», как у меня было изначально (что я бы предпочел).

Кроме того, внутри "$ this-> getValidation () -> data ['components']" как массива Beans с использованием R :: loadAll ('components', $ value); и значение приходит от пользователя.

К сожалению, документация не помогла в решении этой проблемы.

...