2013-07-02 19 views
1

我是一個CakePHP的2.x的。想工作添加一個條件爲我保存的查詢。例如,我想實現這個查詢添加條件CakePHP的:在這個 - >型號 - >保存()

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

有時現在我首先通過個數確認,然後保存到數據庫中...我可以添加條件到我保存,所以我不必須查詢的兩個時間到數據庫只是爲了完成一項任務

+2

爲什麼不使用自定義驗證規則爲這在模型中?會更方便:http://book.cakephp.org/2.0/en/models/data-validation.html#custom-validation-rules – mark

回答

0

這不是真正的CakePHP問題,而不是MySQL。但是你不能這樣做,因爲INSERT query沒有條件查詢。

有做這件事的2種方式:

  1. 正如馬克在註釋中說,使用驗證。驗證雖然適用於單個字段,但這樣做會非常棘手。
  2. 在模型中使用beforeValidate()或beforeSave()回調來檢查它,如果它們返回false,保存操作將不會被執行。
  3. 您可以將UNIQUE索引放到您的表格中,這樣它就不會允許將電話+信息一起插入。

我將與方法去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); 
} 
相關問題