Cakephp 3.5 多次保存相同的记录
Posted
技术标签:
【中文标题】Cakephp 3.5 多次保存相同的记录【英文标题】:Cakephp 3.5 save same record multiple times 【发布时间】:2018-03-14 13:35:05 【问题描述】:也许这个问题已经存在,但到目前为止我还没有找到适合我的解决方案。
我想做的是以下。
创建数据集时,在“保存”按钮旁边,我有一个带有值 (5,10,15,20) 的选择框。这应该确定使用相同内容创建相同记录的频率。除了ID应该清楚。
这是否有效,如果可以,我如何在控制器中实现它?
这是我的代码。
view.ctp
<?= $this->Form->button(__('Submit'),['class' => 'btn btn-primary']) ?>
<?php
echo $this->Form->select(
'copies', [
'1' => '1 time',
'5' => '5 times',
'10' => '10 times',
'15' => '15 times',
'20' => '20 times'
],
[
'label' => false,
'class' => 'form-control'
]
);
?>
<p class="help-block">How often should this record be created?</p>
“副本”字段只是我的一个变量。因此,数据库表中不存在复制字段。
感谢您的帮助
【问题讨论】:
【参考方案1】:你好,我的朋友。 带有 $tableClass->saveMany() 方法的 for 循环应该对你有用
//This is the data that comes from ur form
$data = $this->request->data;
//convert to int
$copies = (int)$data['copies'];
//Empty array that will be filled with data
$to_save = [];
//Time to loop!
for($i = 0; $i < $copies; $i++)
//Push the data into the array
$to_save[] = $some_data_array_to_be_inserted_that_probably_comes_from_the_request_data;
//Register the tableclass
$somethingTable = TableRegistry::get('Something');
//The saveMany() method of a tableClass works as a wrapper for save() method within a loop
if(!$somethingTable->saveMany($to_save))
//Error
echo 'Eita!';
else
//Success!
【讨论】:
以上是关于Cakephp 3.5 多次保存相同的记录的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Cake 3.0 中保存 belongsToMany 数据?