2015-11-12 4 views
0

В настоящее время я работаю над своим приложением cakephp. У меня есть база данных с именем time, и у нее есть две таблицы: users and accounts.Cakephp: проверьте, существуют ли данные до сохранения

Таблица users имеет EmployeeID и данные пароля поля Таблица accounts также EmployeeID, пароль и т.д ..

Теперь, что я хочу, так это каждый раз, когда я добавить данные в таблицу пользователей будет проверить, что данные для сохранения уже существуют в таблице учетных записей, если они не будут вызывать ошибку, иначе она сохранит.

Как я могу сделать это в cakephp? Вот код:

add.ctp

public function add() 
    { 
     $user = $this->Users->newEntity(); 
     if ($this->request->is('post')) { 
      $user = $this->Users->patchEntity($user, $this->request->data); 
      if ($this->Users->save($user)) { 
       $this->Flash->success(__('Logs has been saved.')); 
       return $this->redirect(['action' => 'index']); 
      } else { 
       $this->Flash->error(__('The logs could not be saved. Please, try again.')); 
      } 
     } 
     $this->set(compact('user')); 
     $this->set('_serialize', ['user']); 
    } 
+0

Используйте уникальное поле http://book.cakephp.org/3.0/en/core-libraries/validation.html#custom-validation-rules –

+0

как это возможно, если я использую уникальное поле будет просто сказать, данные, которые нужно вставить, должны быть уникальными, все, что я хочу сделать до того, как мои данные будут сохранены в таблице пользователей, если проверит, что этот EmployeeId и пароль также присутствуют в таблице учетных записей j – 123

+0

Не против, чтобы ваш комментарий не был понятен, что на самом деле вы хотеть ? Если вы хотите создать все уникальные поля, сделайте это, прочитайте документ, пожалуйста. –

ответ

0

Вы можете решить этим путем

в методе добавления вы можете проверить ваш Employid с данными запроса.

Например

if ($this->request->is('post')) { 

      $employid = $this->request->data('employid'); //make sure your field name 

      $this->loadModel('Your Employ model'); // add your employ model 
      $check = $this->Employ->find('count') 
            ->where(['Employ.employid' =>$employid ]); 
      if($check!=0){ 
      $user = $this->Users->patchEntity($user, $this->request->data); 
      if ($this->Users->save($user)) { 
       $this->Flash->success(__('Logs has been saved.')); 
       return $this->redirect(['action' => 'index']); 
       } else { 
        $this->Flash->error(__('The logs could not be saved. Please, try again.')); 
       } 
      } 
      else 
      { 
       echo "error message if not found"; 
      } 

} 

Я думаю, вы получите логику.

Смежные вопросы