php - 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); 价值来自用户。
不幸的是,文档在解决这个问题方面没有帮助。
解决方案
推荐阅读
- javascript - 尝试将 div 捕获为图像时旋转导致问题
- python - 如何通过另一个python文件运行一个python文件然后关闭第一个
- python - 字典值到数组,按键排序
- nginx - 在 Nginx 上通过 https 配置 tusd 的问题
- r - 根据列条件插入和填充两列
- spring - 在端点无效的情况下,Spring boot rest api 不会失败
- spring-security - 如何在 Spring WebFlux Security 中实现多种身份验证方法?
- jwt - 在数据库中存储刷新令牌是否安全?(为登录目的发布新的访问令牌)。或者有没有更简单的方法?
- python - 如何修复用法:setup.py [global_opts] cmd1 [cmd1_opts] 问题?
- spring - Spring OAuth2 谷歌登录+用户名和密码登录