RedbeanPHP多对多关系-奇怪的行为

时间:2019-01-16 04:41:45

标签: php redbean

我在数据库层使用RedbeanPHP,并且2个表之间存在多对多关系。

这些表是:

  • kioskmodels
  • 组件

信息亭模型可以在1个模型中包含多个组件的地方。当前,我不允许RedbeansPHP流畅地添加/删除数据库表。我喜欢对此进行手动控制。

因此,我有一个名为:kioskmodels_components的表,带有2列; 1. kioskmodels_id 2.components_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;
}

发生的事情是,当我添加新记录时,我分配了一个新的kioskmodel bean。如果它正在编辑现有记录,则较早使用R :: load。

但是,当插入一个新的信息亭模型并将其与组件关联时,它想使用一个名为“ components_kioskmodels”的表。发生这种情况时,我一直坚持下去,并更改了数据库表以使其匹配。

但是,当我测试编辑设置时,它想使用我最初使用的“ kioskmodels_components”(我更喜欢)。

此外,使用R :: loadAll('components',$ value);在“ $ this-> getValidation()-> data ['components']”中将其作为Bean的数组。价值来自用户。

不幸的是,文档对于解决此问题并没有帮助。

0 个答案:

没有答案