1

我正在开发一个 cakephp 2.x。想在我的保存查询中添加一个条件。例如,我想实现这个查询

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

有时我首先检查计数,然后保存到数据库中...我可以在保存中添加条件 ,这样我就不必为了完成一项任务而两次查询数据库

4

3 回答 3

0

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

有两种方法:

  1. 正如评论中的马克所说,使用验证。验证虽然适用于单个字段,但执行起来会非常棘手。
  2. 在模型中使用 beforeValidate() 或 beforeSave() 回调来检查这一点,如果它们返回 false,则不会执行保存操作。
  3. 您可以将 UNIQUE 索引放入您的表中,这样它就不允许将电话+消息插入在一起。

我会选择方法2。

于 2013-07-02T14:44:10.717 回答
0

beforeSave在你的模型中尝试方法

于 2013-07-02T17:35:00.513 回答
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);
}
于 2013-07-03T04:47:32.197 回答