2014-09-18 41 views
0

我正在使用Yii框架,我正在爲用戶創建一個註冊頁面。爲了讓用戶創建一個賬戶,他們需要輸入一個機票代碼。一個寡婦窗體彈出,他們填寫門票代碼,它ajax正確驗證並將其存儲爲會話變量。彈出窗口關閉,並允許用戶填寫表格的其餘部分並提交。然後表單應該驗證信息,創建用戶,將票證的user_ID重新分配給新的user_ID,並加載頁面/票證/ mytickets。yii框架方法沒有正確保存

會發生什麼情況,確認它存在,將其保存到會話中,創建用戶,調用票證重新分配方法,不重新分配票證,並重新加載頁面。當我在重新加載頁面上回顯頁面時,它會顯示user_ID的正確信息和ticket_ID。

任何提示將有助於調試,這將有所幫助。謝謝

//controler 
public function actionRegister() 
{ 

    $model=new User; 
    $valid = false; 
    //check to see if valid 
    if(isset($_POST['User'])){ 
     $valid = $model->checkValid(); 
    } 
    if($valid) 
    { 
     $model->attributes=$_POST['User']; 
     $user_ID = $model->ID; 
     if($model->save()){ 
      //save ticket to user 
      $reassigned = Ticket::model()->reassign_with_IDs($_SESSION['ticket_ID'],$user_ID); 
      if($reassigned){ 
       unset($_SESSION['ticket_ID']); 
       //redirect to mytickets 
       $this->redirect(array('/ticket/mytickets')); 
      } 
     } 
    } 

    $this->render('register',array(
     'model'=>$model, 
    )); 

} 


//model 
public static function reassign_with_IDs($ticket_ID,$user_ID){ 
    $ticket = Ticket::model()->findByPK($ticket_ID); 
    $ticket->user_ID = $user_ID; 
    if($ticket->save()){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
} 

回答

0

$model->ID$model保存後,才設置。因此,你的代碼應該閱讀:

if($valid) 
{ 
    $model->attributes=$_POST['User']; 
    if($model->save()){ 
     //save ticket to user 
     $user_ID = $model->ID; 
     $reassigned = Ticket::model()->reassign_with_IDs($_SESSION['ticket_ID'], $user_ID); 

但是,您可以擺脫reassign_with_IDs函數和變量不必要的user_ID,只是明確設置使用機票:

$reassigned = Ticket::model()->updateByPk($_SESSION['ticket_ID'], ['user_ID'=>$model->ID]); 
+0

你與你的答案是正確的。我剛剛得到數據庫updateByPK的錯誤,所以我最終這樣做: if($ model-> save()){ //將票證保存到用戶 $ user_ID = $ model-> ID; $ ticket_ID = $ _SESSION ['ticket_ID'];$ reassigned = Ticket :: model() - > reassign_with_IDs($ ticket_ID,$ user_ID); if($ reassigned)unset($ _ SESSION ['ticket_ID']); //重定向到mytickets $ this-> redirect(array('/ ticket/mytickets')); } } – 2014-09-19 14:03:49