想要更新或返回false而不是在cakephp中插入

时间:2015-03-04 10:51:26

标签: php mysql cakephp

我在cakephp中使用saveField方法更新字段。

示例:

$this->Attachment->id = $id;
$updateResult = $this->Attachment->saveField('dispatched', '1');

现在,如果db中不存在$id的值,则saveField在数据库中插入新记录。但我想更新记录而不是新插入。如果db中不存在$id的值,那么我希望从saveField

返回false

我是怎么做到的?

2 个答案:

答案 0 :(得分:1)

只需将保存包装在条件中:

$this->Attachment->id = $id;
if(isset($id) {
  //your save here
  $updateResult = $this->Attachment->saveField('dispatched', '1');
}else{
  return false;
}

评论后更新:

所以做一个计数并将其用作测试:

$settings = array(
  'conditions'=>array(
    'Atachment.id'=>$id;
  )
);
$test = 0;
$test = $this->Attachment->find('count', $settings);

if($test >0 {
   //your save here
} else {
  //return false here
}

应该这样做。

答案 1 :(得分:1)

你必须检查记录是否存在

if ($this->Attachment->findById($id)) {
    $this->Attachment->id = $id;
    return $this->Attachment->saveField('dispatched', '1');
} else {
    return false;
}