cakephp - CakePHP 3.x - 保存多对多数据
问题描述
我正在尝试使用连接表来修补实体,但我无法让它保存关联的记录,而且我认为我的后端代码是正确的,但我不确定前端代码应该是什么样子......
这是场景,我有三个表
分类帐表
id int
title string
部落表
id int
name string
分类帐部落表
id int
ledger_id int
tribe_id int
这是我的后端代码
public function ledgerSave($id = null)
{
$this->loadModel('Ledgers');
$ledger = $this->Ledgers->get($id, [
'contain' => ['LedgersTribes']
]);
if ($this->request->is(['patch', 'post', 'put'])) {
$ledger = $this->Ledgers->patchEntity($ledger, $this->request->getData(), [
'associated' => ['LedgersTribes']
]);
if ($this->Ledgers->save($ledger)) {
$this->Flash->success(__('The ledger has been saved.'));
return $this->redirect($this->referer());
}
$this->Flash->error(__('The ledger could not be saved. Please, try again.'));
}
$this->set(compact('ledger'));
}
这是相关的前端代码
<?= $this->Form->control('tribe_id[]', ['type' => 'checkbox', 'label' => false, 'class' => 'minimal', 'value' => $tribe->id]) ?>
我的问题是,tribe_id 的字段名称应该是什么,我的想法是,我有一个复选框列表,用户检查了几个框,然后将那些tribe_id 插入到带有 ledger_id 的 LedgersTribes 表中
关于如何做到这一点的任何想法?
编辑:这是表格的截图
我已经查看了以下链接,但没有一个回答我的问题......
解决方案
这应该这样做:
echo $this->Form->control('tribes._ids[]', [
'type' => 'checkbox',
'label' => false,
'class' => 'minimal',
'value' => $tribe->id]
]);
这在这里描述:https ://book.cakephp.org/3.0/en/views/helpers/form.html#creating-inputs-for-associated-data
推荐阅读
- c# - 如何在 C# 中解析这个 jsonobject
- selenium - 尝试在詹金斯上运行硒时出现问题
- javascript - 如果 Javascript 中缺少对象键,则跳过未定义错误
- varnish - 无法将 Varnish 放在端口 80
- html - 使用 CSS 网格创建 3x3 响应式布局
- php - 如何使用php从字符串中获取年份
- javascript - 单击按钮时如何将多个值传递给模态?
- css - Bootstrap 4 continer-fluid 类不允许具有相对位置的 div
- flutter - 如何在 Flutter 中实现背景模糊的底部模态表?
- azure-keyvault - Azure Key Vault 机密值的最大大小是多少?