Cakephp 更新多条记录或如果数据库中不存在 id 则创建新记录

Cakephp Update multiple records or create new one if id doesn't exist in database

你好,我有一个显示输入的编辑表单 fields.I 我正在这些字段中显示来自数据库的数据,以便用户可以编辑它们。还有一个按钮要求添加新字段。我可以编辑多个字段,但问题是如果没有记录的现有 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 则创建一条新记录,二是为什么我的这段代码适用于更新记录。

试试这个:

 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);