【发布时间】:2018-05-11 15:10:45
【问题描述】:
我在角色模型中有如下定义的用户角色关系(多对多):
public function users()
{
return $this->belongsToMany('App\User');
}
现在我想显示特定角色的所有用户。我执行以下操作:
$list = Role::find(1)->users()->select('name')->orderBy('name')->paginate(10);
这里$list 包含属于ID 为1 的角色的所有用户,这是正确的。但问题是:在$list 上添加断点时显示:所有用户模型的属性都被检索,就像select('name') 没有效果一样。
这是一个大问题,尤其是当我想将$list 作为 json 返回时。检索用户密码,即使它在用户模型的$hidden 数组中。
我的问题是:
为什么 querybuilder 上的 paginate() 不尊重 select() 也不尊重模型的 $hidden 数组中的属性?
注意:我知道还有其他解决方案可以实现我想要的。我只想回答我的问题以弄清楚发生了什么?
【问题讨论】:
-
你使用 FIND() 的方式不好。阅读:laravel.com/docs/5.5/eloquent#retrieving-single-models
标签: php laravel pagination laravel-5.5