2

我正在尝试使用连接表来修补实体,但我无法让它保存关联的记录,而且我认为我的后端代码是正确的,但我不确定前端代码应该是什么样子......

这是场景,我有三个表

分类帐表

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 表中

关于如何做到这一点的任何想法?


编辑:这是表格的截图

在此处输入图像描述


我已经查看了以下链接,但没有一个回答我的问题......

CakePHP 3:保存关联模型失败

保存在 cakephp 3 中的关联不起作用

如何在 cakephp 3.x 中保存关联的 joinData

CakePHP 3 无法保存关联模型

Cakephp 3 - 保存关联的 belongsToMany (joinTable)

4

2 回答 2

1

这应该这样做:

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

于 2019-05-20T09:50:37.620 回答
-1

我认为您必须获取要保存数据的表(例如:TableRegistry::getTableLocator()->get(''))。然后从中创建实体并保存数据,希望它会起作用。

于 2019-05-17T07:46:36.037 回答