CakePHP:如何使用Form帮助程序同时更新多个记录
发布时间:2020-12-13 17:16:09 所属栏目:PHP教程 来源:网络整理
导读:在模型Test的编辑页面上,我希望能够在同一表单中更新所有相关(由hasMany)问题的“Questions.order”字段. 我已经准备好了本书中的Cake book chapter on saveMany()/saveAll(),我正在使用Model.0.field语法,但我无法弄清楚如何告诉CakePHP哪个记录对应哪个输
在模型Test的编辑页面上,我希望能够在同一表单中更新所有相关(由hasMany)问题的“Questions.order”字段.
我已经准备好了本书中的Cake book chapter on saveMany()/saveAll(),我正在使用Model.0.field语法,但我无法弄清楚如何告诉CakePHP哪个记录对应哪个输入.模型#.字段中的#是否应该与问题的id字段对应?这是我目前正在做的事情: echo $this->Form->create( 'Question',array('action'=>'order')); $n = 0; foreach ($questions_array as $question) : ?> <?php echo $this->Form->input('Question.'.$n.'.order' ); ?> <?php echo $this->Form->input('Question.'.$n.'.id',array('type'=>'hidden','value'=>$question['Question']['id']) ); ?> <input type="submit" value="Save" /> ... $n++; endforeach; $this->Question->Form->end(); 表单提交并似乎保存,但更新的订单值与正确的问题记录不对应.我究竟做错了什么? 更新: 这是我的控制器中的订单操作: public function admin_order() { $data = $this->request->data; $this->Question->saveAll($data['Question']); $this->Session->setFlash( "Order saved."); $this->redirect( $this->referer() ); } 解决方法
CakePHP将所有具有相同“索引”的字段关联到数据库中的单个“记录”. ‘index'(即Foo.0.id中的0)与记录的’id’没有任何关系,它只是一个数字.
例如; Foo.0.id = 123 Foo.0.name = 'hello'; Foo.1.id = 124 Foo.1.name = 'world'; 正如我在回答的开头所提到的,索引本身并不重要,这段代码将完全相同: Foo.12345.id = 123 Foo.12345.name = 'hello'; Foo.54321.id = 124 Foo.54321.name = 'world'; 只要同一记录的字段具有相同的“索引”,CakePHP就会明白它们属于“在一起”. 提交此数据并使用时保存; $this->Foo->saveMany($this->data['Foo']); // Just $this->data will probably work as well CakePHP通过Foo模型更新两行; 表’foos’; id name ------------------------ 123 hello 124 world 您的代码似乎对每行使用相同的’id'($qset [‘Qset’] [‘id’]),这可能不是更新这些记录的正确ID (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |