首页 > 解决方案 > RedbeanPHP 多对多关系 - 奇怪的行为

问题描述

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

这些表是:

其中 kioskmodels 可以在 1 个模型中有多个组件。目前,我不允许 RedbeansPHP 流畅地添加/删除数据库表。我喜欢手动控制它。

所以我有一个名为:kioskmodels_components 的表,有 2 列;1. kioskmodels_id 2. components_id

问题是,当我在 kioskmodels 中添加新记录时,使用如下分配功能:

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。

但是,当插入新的 kioskmodels 并将其与组件关联时,它希望使用名为“components_kioskmodels”的表。发生这种情况时,我也随之更改了 db 表以匹配它。

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

此外,在 "$this->getValidation()->data['components']" 作为 Bean 数组内部使用 R::loadAll('components', $value); 价值来自用户。

不幸的是,文档在解决这个问题方面没有帮助。

标签: phpredbean

解决方案


推荐阅读