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 数据?

Cake php 4 使用数组中的关联保存数据

cakePHP - 有条件的保存,可以吗?

CakePHP 1.3 未保存到数据库但 sql 语句正确且 insertID 正确增加

Cakephp 3.5查询 - 筛选具有相同标题的条目

调用未定义的方法 Cake\ORM\Entity::query() CakePhp