2013-10-18 26 views
0

插入的問題,我有這個問題,CakePHP的我有一個表的用戶和配置文件,
概況表都有一個引用users表中的id列的外鍵USER_IDCakePHP中使用PostgreSQL數據庫

現在,當我插入,我先爲用戶插入數據,然後從用戶表中檢索最後插入的數據的id,然後將其傳遞給user_id字段,這在配置文件表 中現在問題是我收到此錯誤:

錯誤:SQLSTATE [22P02]:無效的文本表示形式:7錯誤:數組值必須以「{」或尺寸信息開頭

這裏是數據插入的代碼。

/* 
* signup method 
* @return void 
*/ 
public function signup(){ 
    if($this->request->is('post')){        
     $this->User->create(); 
     //Tweek to unset modified field. 
     $user_data = array(
      'username' => $this->request->data['User']['username'], 
      'password' => $this->request->data['User']['password'], 
      'modified' => false    
     ); 
     $user = $this->User->save($user_data); 
     if(!empty($user)){ 
      //If the user was saved get the users id and pass to profile user_id foreign key 
      $this->request->data['Profile']['user_id'] = $this->User->id; 

      // Because our User hasOne Profile, we can access 
      // the Profile model through the User model 
      $profile_data = array(
       'user_id' => $this->request->data['Profile']['user_id'], 
       'student_id' => $this->request->data['Profile']['student_id'], 
       'first_name' => $this->request->data['Profile']['first_name'], 
       'middle_name' => $this->request->data['Profile']['middle_name'], 
       'last_name' => $this->request->data['Profile']['last_name'], 
       'modified' => false 
      ); 
      if($this->User->Profile->save($profile_data)){ 
       $this->Session->setFlash(__('Your Account has been successfully added.')); 
       return $this->redirect(array('action' => 'login')); 
      } 
      $this->Session->setFlash(__('The user could not be saved. Please, try again.'), 'default', array(), 'register_error'); 
     } 
    } 

    $this->layout = 'custom_layouts/default'; 
    $data = array(
     'id' => 'signup', 
     'title_for_layout' => 'Reservation . Sign up' 
    ); 
    $this->set($data); 
} 


這裏是用戶模式:

<?php 
App::uses('AuthComponent', 'Controller/Component'); 
App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth'); 

/** 
* User Model 
* 
*/ 
class User extends AppModel { 
    //Allow Model to use both users and profiles table 
    public $uses = array('User', 'Profile'); 

    //Setting Models Association 
    public $hasOne = array(
     'Profile' => array(
      'classname' => 'Profile', 
      'order' => array('Profile.last_name' => 'ASC'), 
      'dependent' => TRUE 
     ) 
    ); 

    /** 
    * Validation rules 
    * 
    * @var array 
    */ 
    public $validate = array(
     'username' => array(
      'required' => array(
       'rule' => array('notEmpty'), 
       'message' => 'A username is required' 
      ), 
      'isUnique' => array(
       'rule' => 'isUnique', 
       'message' => 'This username has already been taken.' 
      ) 
     ), 
     'password' => array(
      'required' => array(
       'rule' => array('notEmpty'), 
       'message' => 'A password is required' 
      ), 
      'minlength' => array(
       'rule' => array('minlength', '8'), 
       'message' => 'Password should be 8 characters long' 
      ) 
     )   
    );  

    public function beforeSave($options = array()){   
     //Hash passwords before saving to database   
     if(!empty($this->data[$this->alias]['password']) || isset($this->data[$this->alias]['password'])){ 
      $hashedPassword = Security::hash($this->data[$this->alias]['password'],"blowfish"); 
      $this->data[$this->alias]['password'] = $hashedPassword; 
     }   
     return true; 
    }  
} 


這裏是簡介型號:

<?php  
/** 
* User Model 
* 
*/ 
class Profile extends AppModel { 
    //Setting Models Association 
    public $belongsTo = array(
     'User' => array(
      'classname' => 'User', 
      'foreignKey' => 'user_id' 
     ) 
    ); 

    //Data Validation 
    public $validate = array(
     'student_id' => array(
      'required' => array(
       'rule' => array('notEmpty'), 
       'message' => 'A student id is required' 
      ), 
      'isUnique' => array(
       'rule' => 'isUnique', 
       'message' => 'This student id has already been taken.' 
      ) 
     ), 

     'email' => array(
      'required' => array(
       'rule' => array('notEmpty'), 
       'message' => 'An email is required' 
      ), 
      'isUnique' => array(
       'rule' => 'isUnique', 
       'message' => 'This email address has already been taken.' 
      ) 
     ) 
    ); 
} 


這裏是Schema

回答

0

您的字段可能是數組類型。你可以發佈你的數據庫模式?

規則42和43似乎是錯誤的。數組時間戳?

+0

我已經更新了上面的問題,我已經包含了用戶和配置文件模型以及鏈接到Pastebin的架構。 – tonix15