Cakephp:在此添加条件 - > Model-> save()

时间:2013-07-02 13:30:50

标签: cakephp cakephp-2.0 cakephp-2.1

我正在使用cakephp 2.x .want将条件添加到我的保存查询中...例如我想实现此查询

       INSERT INTO 'this' where condition is 'this'

现在我正在做这个

      $count = $this->Message->find('count', array(
                'conditions' => array('Message.mobileNo' => $mobileNo,
                                      'Message.body'=>$body

                )));

            if($count>0){
                echo "already have a message";

             }else
            {
                $this->Message->create();
                $this->Message->save($this->request->data);
            }

有时候我现在首先检查计数然后保存到数据库中...我可以在我的保存中添加条件,所以我不必在数据库中查询两次只是为了完成一项任务

3 个答案:

答案 0 :(得分:0)

这不是CakePHP问题而不是MySQL。但是你不能这样做,因为INSERT query没有条件查询。

有两种方法:

  1. 正如评论中Mark所说的那样使用验证。验证虽然适用于单个字段,但执行它将非常棘手。
  2. 在模型中使用beforeValidate()或beforeSave()回调来检查它,如果它们返回false,则不会执行保存操作。
  3. 您可以将UNIQUE索引添加到您的表中,以便它不允许同时插入电话+消息。
  4. 我会选择方法2。

答案 1 :(得分:0)

尝试模型中的beforeSave方法

答案 2 :(得分:0)

您可以更好地使用以下代码:

$conditions = array('Message.mobileNo' => $mobileNo,
            'Message.body'=>$body);
if ($this->Message->hasAny($conditions)){
    echo "already have a message";
}
else{
    $this->Message->create();
        $this->Message->save($this->request->data);
}