Получить данные из базы данных на основе текущего входа пользователя в yii2

Как получить данные из базы данных на основе текущего входа пользователя? Например, когда пользователь входит в систему и щелкает панель профиля, отображаются только его/ее данные. Я пробовал раньше, но он отображает все данные пользователя.

На сайте personalinfo.php

    <?php foreach ($personals as $user):?><?=Html::encode("{$user->username}")?><?php endforeach;?>
    <?php foreach ($personals as $user):?><?=Html::encode("{$user->user_id}")?><?php endforeach;?>
    <?php foreach ($personals as $user):?><?=Html::encode("{$user->email}")?><?php endforeach;?>

На контроллере

    public function actionPersonalinfo()
    {
    $query = User::find()->all();
    return $this->render('personalinfo', [
        'personals' => $query
    ]);


    }

Я думаю из-за $query = User::find()->all();. Но я не знаю, как заменить его, чтобы он извлекал данные на основе текущего входа пользователя. Я очень новичок в yii2. Извините и спасибо


person Fyp16    schedule 04.11.2016    source источник


Ответы (2)


Замените свой код на:

На сайте personalinfo.php

  User Id :    <?php echo $personals->user_id; ?>
  Username:    <?php echo $personals->username; ?>
  Email   :    <?php echo $personals->email; ?>

На контроллере

    public function actionPersonalinfo() {
        $query = User::findOne(Yii::$app->user->id);
        return $this->render('personalinfo', [ 'personals' => $query ]);
    }
person Mohan    schedule 04.11.2016
comment
Большое спасибо @Mohan, потому что поделитесь этими знаниями .. Это работает .. я ценю это - person Fyp16; 04.11.2016

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

что-то типа:

$user = User::findOne(Yii::$app->user->id);

Кроме того, если вам нужно вернуть только один экземпляр Active Record, вам не нужно зацикливаться на своем представлении.

person alfa6661    schedule 04.11.2016
comment
Спасибо за помощь - person Fyp16; 04.11.2016