2013-08-23 4 views
-1

Я работаю над cakephp 2.x, я хочу создать новую строку или запись, если идентификатор пользователя отсутствует в db, в противном случае обновить запись, но проблема в следующем: он не обновляет текущую запись. Он создает запись с идентификатором пользователя «0». Я не знаю, что проблема. Если не найти запись, она должна создать запись с идентификатором пользователя, который я даю.Создание новой записи, если id не находится в db

public function activeNoStatus(){ 


    $this->loadModel('Status'); 
    $userid = $this->request->data('idUser'); 
    $notify = $this->request->data('notify'); 

    $data = array(); 
    $data['activeNo'] = $notify; 




    $count = $this->Status->findUserId($userid); 
    if($count>0){ 
     $this->Status->id = $userid; 
     $this->Status->save($data); 


     echo "update"; 
    }else{ 
      //create new row 
      $datanew=array(); 
     $this->Status->id = $userid; 
     $this->request->data['Status']['activeNo']=$notify; 

      $this->Status->save($this->request->data); 
      echo "ok"; 
    } 



} 
+1

Где жизненно важный '$ this-> Status-> create()', если вы хотите создать новую запись? – mark

+0

ohh я пропустил здесь, пока вы не опубликовали его, но его работа .. это создает запись с idUser .... и я сообщаю вам, что мой idUser, который является первичным ключом, не является автоинкрементным – hellosheikh

+0

, спасибо вам, он решает моя проблема ... мне не хватало этой строки – hellosheikh

ответ

0

кажется idUser поля не Autoincrement, В cakePHP documentaion:

Всех таблиц, с которыми модель CakePHP взаимодействует (за исключением объединения таблиц), требует особого первичного ключа для однозначной идентификации каждого ряд. Если вы хотите смоделировать таблицу, которая не имеет первичного ключа с одним полем , соглашение CakePHP заключается в том, что в таблицу добавлен первичный ключ с одним полем . Вы должны добавить первичный ключ с одним полем, если вы хотите использовать эту модель таблицы.

Вместо использования ключа автоматического увеличения в качестве первичного ключа вы можете использовать и использовать char (36). Затем Cake будет использовать уникальный 36-значный uuid (String :: uuid) всякий раз, когда вы сохраняете новую запись, используя метод Model :: save .

Поэтому вы должны сделать автоинкремент idUser Первичный ключ.