dongshuang0011 2017-05-04 15:35
浏览 62

在cakephp中更新多个表

I'm trying to know what's the wrong with this function , which i need to update only one field in table or the all fields in multi assocatied tables . The multi update is working fine , but when i going to update only the first column it's not working fine with me

public function edit($id) {
    $contractor = $this->Contractors->get($id);

     $associated = ['ContractorsAttachments' ];
    // Used to get the all attachments associated with Contractors 
     $ContractorsAttachments = $this->Contractors->ContractorsAttachments->find()->where(['contractor_id' => $id])->all();
    if ($this->request->is(['patch', 'post', 'put'])) {
      $contractor = $this->Contractors->patchEntity($contractor, $this->request->data );

       if ($this->Contractors->save($contractor)) {

            $this->Flash->success(__('The Contractors has been saved.'));

            return $this->redirect(['action' => 'index']);
        }
        $this->Flash->error(__('The Contractors could not be saved. Please, try again.'));
    }
    $this->set(compact('contractor','ContractorsAttachments'));
    $this->set('_serialize', ['contractor']);
    $this->render('add');
    }
  • 写回答

1条回答 默认 最新

  • dtcaw02086 2017-05-04 17:10
    关注

    You can get associated model data using contain.

    Use Saving With Associations

    After the tweaks your code will be like this

         $contractor = $this->Contractors->get($id, ['contain'=>'ContractorsAttachments']);
    
         if ($this->request->is(['patch', 'post', 'put'])) {
           $contractor = $this->Contractors->patchEntity($contractor, $this->request->data );
    
           if ($this->Contractors->save($contractor,['associated' => ['ContractorsAttachments']])) {
    
                $this->Flash->success(__('The Contractors has been saved.'));
    
                return $this->redirect(['action' => 'index']);
            }
            $this->Flash->error(__('The Contractors could not be saved. Please, try again.'));
        }
    

    Also verify that you Contractors Model has the association defined like this

            $this->hasMany('ContractorsAttachments', [
                'foreignKey' => 'contractor_id'
            ]);
    

    Hope this will help :)

    评论

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP