【问题标题】:Laravel: how to make relationship without $hidden attributes?Laravel:如何在没有 $hidden 属性的情况下建立关系?
【发布时间】:2018-12-27 16:03:54
【问题描述】:

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

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'));
}

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

【问题讨论】:

  • 关于“它显示相关用户但带有他的 $hidden 字段”:它在哪里显示隐藏字段? $hidden 仅适用于 JSON 输出。

标签: laravel relationship eager-loading


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2019-08-05
    • 1970-01-01
    • 2019-01-01
    • 2011-04-01
    • 1970-01-01
    相关资源
    最近更新 更多