0

UPDATE2:

次のように、/ protected/componentsに新しいWebUser.phpコンポーネントを作成しました。

<?php
class WebUser extends CWebUser{
private $_model;

function getId(){
    $user = $this->loadUser(Yii::app()->user->id);
    return $user->id;
}

protected function loadUser($id=null){
    if($this->_model===null)
    {
        if($id!==null)
        {
            $this->_model=Users::model()->findByPk($id);
        }
        return $this->_model;
    }       
}
}

main.phpにもコンポーネントを登録しました。変更をアップロードした後も、私のアプリはWebUser.getIdが定義されていないと表示します。

更新:
変更を加えてからロールバックした後、新しいエラーが発生します:

Property "CWebUser.getId" is not defined. 

問題のコードのスニペットは次のとおりです。

$user = Users::model()->find('username=?', array(
Yii::app()->user->getId));    

ユーザーモデルの$idフィールドを参照するためにgetIdをどこでどのように設定する必要がありますか?

私のUserControllerは次のSQLエラーをスローしています:

CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]: Invalid parameter number:     
parameter was not defined. The SQL statement executed was: SELECT * FROM `users` `t` WHERE 
username=? LIMIT 1 

このエラーは、コントローラーの次のスニペットが原因で発生しています。

public function actionProfile($id=''){        

        $user = Users::model()->find('username=?', array(Yii::app()->user->getId()));
        if(!$id){
            $id = $user->id;
            if(!$id)
            $this->redirect('login');
        }
        if( getUserSess('user_type') == 'Sitter') {
            $this->render('profile_detail', array('user_id' => $id ));
        } else {
            $this->render('petowner_profile_detail',array(
        'model'=>$this->loadModel($id),
    ));
        }
    }

profile_detailビューは次のとおりです。

<?php
if(!$user_id){
    $user_id = getUserSess('id');
}
$this->widget('ext.UserProfile.BasicProfile',array('user_id'=>$user_id)); ?>
<?php //$this->widget('ext.UserProfile.UserServices',array('user_id'=>$user_id)); ?>

petowner_profile_detailビューは次のとおりです。

<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
    'username',
    'email',
    'phone',
    'fname',
    'lname',
    'address1',
    'address2',
    'city',
    'state',
    'zip',
    'is_year_old',
    'user_type',
//      'register_date',
//      'varified_date',
//      'is_premium',
//      'last_login',
),
)); ?>

SQLエラーを修正するにはどうすればよいですか?

4

1 に答える 1

1

アップデート:

$user = Users::model()->find('username=:id', array(":id" => Yii::app()->user->id));

更新 2:

Yii::app()->user->getId() または Yii::app()->user->id が Yii::app()->user->getId ではない

于 2012-08-15T21:22:47.737 に答える