我在数据库层使用RedbeanPHP,并且2个表之间存在多对多关系。
这些表是:
信息亭模型可以在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的数组。价值来自用户。
不幸的是,文档对于解决此问题并没有帮助。