【问题标题】:Cakephp Update multiple records or create new one if id doesn't exist in database如果数据库中不存在 ID,Cakephp 更新多条记录或创建新记录
【发布时间】:2016-10-25 03:26:17
【问题描述】:

你好,我有一个显示输入字段的编辑表单。我在这些字段中显示来自数据库的数据,以便用户可以编辑它们。还有一个按钮要求添加新字段。我可以编辑多个字段,但问题是如果没有记录的现有 ID,我如何在数据库中创建一个新字段。 注意:对于新字段,我发送0 id 以便我可以在 cakephp 中检查它有一个新字段。

foreach ($exp as $k => $v) {
  $dat[$k]["prp_id"] = $prpid;
  $dat[$k]["exp_company"] = $v['company'];
  $dat[$k]["position"] = $v['position'];
  $dat[$k]["exp_id"] = $v['exp_id'];
}

$this->Experience->saveAll($dat, array('conditions' => array('exp_id' => $v['exp_id'])));

这是更新所有字段。顺便说一句,我也不确定为什么它可以正常工作,因为我在这里$v['exp_id'] 只发送一个值,因为它在循环之外,但它工作得很好,这意味着我可以处理多个我不确定如何的字段。所以最后我有两个问题。一是如果exp_id0 则创建一条新记录,二是为什么我的这段代码适用于更新记录。

【问题讨论】:

    标签: cakephp cakephp-2.0 cakephp-2.3


    【解决方案1】:

    试试这个:

     foreach ($exp as $k => $v) {
       $dat[$k]["prp_id"] = $prpid;
       $dat[$k]["exp_company"] = $v['company'];
       $dat[$k]["position"] = $v['position'];
    
       if ($v['exp_id'] != 0) {
         $dat[$k]["exp_id"] = $v['exp_id'];
       }
     }
    
     $this->Experience->saveAll($dat);
    

    【讨论】:

    • 它没有更新它。它创造了新的记录
    • 我可以看到 $dat 数组的调试结果吗..我想看看您是否必须在 foreach 循环中检查该条件。
    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多