2015-03-19 80 views
1

我应该如何通过getPrimaryKey()在YII 1中获取最后插入的ID?YII 1中的getPrimaryKey函数不起作用

我的记录已插入数据库,但它返回空值。

我已经使用了下面的代码。

public function saveSurvey($model){ 
    if($model->ID == ''){ 
     $model->Name = trim($model->Name); 
     $model->EngagementQuestionNo = trim($model->EngagementQuestionNo); 
     $model->CSVColumnCount = trim($model->CSVColumnCount); 
     $model->LocationQuestionNo = trim($model->LocationQuestionNo); 
     $model->CreatedOn = new CDbExpression('NOW()');   
     if($model->save()){ 
      echo 'saved id >> '; 
      echo $surveyID = $model->ID; 
     } 
     else{ 
      echo 'error'; 
     } 
    } 
} 

我在型号

public function rules() 
{  
    return array(
     array('Name,EngagementQuestionNo,CSVColumnCount,LocationQuestionNo', 'required'), 
     array('CSVColumnCount', 'numerical', 'integerOnly'=>true), 
     array('Name', 'length', 'max'=>100), 
     array('QuestionNumbers, ID', 'safe'), 
     array('ID, Name, CreatedOn, LastModifiedOn,QuestionNumbers', 'safe', 'on'=>'search'), 
    ); 
} 
+0

我认为你需要使用'$模型 - > ID代替'$ of'模型 - > primaryKey' – Jack 2015-03-19 12:52:22

回答

1

你必须只初始化调查模型类

$ newObjectModel =新的调查()的新对象现行规则;

添加新对象后,你的代码看起来象下面这样:

public function saveSurvey($model){ 
    if($model->ID == ''){ 
     $newObjectModel = new Survey(); 
     $newObjectModel ->Name = trim($model->Name); 
     $newObjectModel ->EngagementQuestionNo = trim($model->EngagementQuestionNo); 
     $newObjectModel ->CSVColumnCount = trim($model->CSVColumnCount); 
     $newObjectModel ->LocationQuestionNo = trim($model->LocationQuestionNo); 
     $newObjectModel ->CreatedOn = new CDbExpression('NOW()');   
     if($newObjectModel ->save()){ 
      echo $surveyID = $newObjectModel ->ID; 
     } 
     else{ 
      echo 'error'; 
     } 
    } 
}