2013-07-02 1 views
1

я тружусь на CakePHP 2.x .want, чтобы добавить условие в мой сохранить запрос .. например я хочу, чтобы реализовать этот запросCakePHP: добавить условие в this-> Модель-> Save()

 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); 
} 
Смежные вопросы