首页 > 解决方案 > Laravel:如何在没有 $hidden 属性的情况下建立关系?

问题描述

我在帖子和用户之间有关系

public function user()
{
    return $this->belongsTo('App\User');
}

例如,当我显示具有急切负载的帖子时

$post->with('user');

它显示了相关用户,但带有他的 $hidden 字段,因此可以看到他的加密密码、remember_token 等。如何避免这种情况?select我知道在定义关系时可以这样做

public function user()
{
    return $this->belongsTo('App\User')->select(array('id', 'username', 'slug', 'description'));
}

但是有没有更清洁的方法来做到这一点?

标签: laravelrelationshipeager-loading

解决方案


嗯,也许你搞砸了 User 类的 $hidden 属性?这是开箱即用的,没有什么可做的。如果您好奇,这一切都由 HidesAttributes 特征处理,它是 Model 基类的一部分。

由于您的 User 类应该是 Authenticatable 的子类,它是 Model 的子类,所以您应该很高兴。仔细检查您的用户类别。

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

推荐阅读