2017-10-30 11:53:21 4275次浏览 3条回答 0 悬赏 20 金钱
public static function findByUsername($username)
{
    return static::findOne(['username'=>$username]);
}


public function getUser()
{
    if ($this->_user === false) {
        $this->_user = User::findByUsername($this->username);
        var_dump($this->_user);
    }
    return $this->_user;
}

代码如上:
var_dump出来的值如下:

  public 'id' => null
  public 'username' => null
  public 'password' => null
  public 'authKey' => null
  public 'accessToken' => null
  private '_attributes' (yii\db\BaseActiveRecord) => 
    array (size=5)
      'id' => int 1
      'username' => string 'hello' (length=5)
      'password' => string 'hello' (length=5)
      'auth_key' => null
      'accessToken' => null
  private '_oldAttributes' (yii\db\BaseActiveRecord) => 
    array (size=5)
      'id' => int 1
      'username' => string 'hello' (length=5)
      'password' => string 'hello' (length=5)
      'auth_key' => null
      'accessToken' => null
  private '_related' (yii\db\BaseActiveRecord) => 
    array (size=0)
      empty
  private '_errors' (yii\base\Model) => null
  private '_validators' (yii\base\Model) => null
  private '_scenario' (yii\base\Model) => string 'default' (length=7)
  private '_events' (yii\base\Component) => 
    array (size=0)
      empty
  private '_behaviors' (yii\base\Component) => 
    array (size=0)
      empty

疑问:findOne 出来的值,是否正确,我想取出 password 这个字段该怎么做?

  • 回答于 2017-10-30 11:57 举报

    楼主要好好学习一下 markdown 语法,不要每次都让我给你改格式,自己也预览一下看看是否能看得过去?

    2 条回复
    回复于 2017-10-30 13:04 回复

    好的,舰长能不能顺便也回答下上面这个问题?我用这种方式: class User extends ActiveRecord 就不会出现问题,用class User extends ActiveRecord implements \yii\web\IdentityInterface 就会出现上面的打印问题,且不能根据字段取出相关的值,谢谢了

    回复于 2017-10-30 13:33 回复

    你取出password也没用啊,都是密文的,一般没有取password的操作。

  • 回答于 2017-10-30 16:34 举报

    findByUsername()返回的是ARObject如果获取对应的字段:$this->_user->字段名

    3 条回复
    回复于 2017-10-30 17:36 回复

    这个_user是什么?

    回复于 2017-10-31 15:30 回复

    @yii_song这个 _user不是你设置的一个属性吗? $this->_user = User::findByUsername($this->username);

    回复于 2017-11-03 09:40 回复

    哦,是的

  • 回答于 2017-11-02 13:46 举报

    $row = User::findOne(['username'=>$username]); echo $row->password;

您需要登录后才可以回答。登录 | 立即注册
yii_song
总监

yii_song

注册时间:2016-05-08
最后登录:2018-09-14
在线时长:35小时17分
  • 粉丝4
  • 金钱3820
  • 威望10
  • 积分4270

热门问题