php - Laravel paginate 无法在 querybuilder 上选择某些列

我在角色模型中定义了如下用户角色关系(多对多):

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 数组中的属性?

注意:我知道还有其他解决方案可以实现我想要的。我只想得到我的问题的答案,以弄清楚发生了什么?

最佳答案

select('name') 没有效果,因为 paginate() 方法将列作为第二个参数

$list = Role::find(1)->users()->orderBy('name')->paginate(10, ['name']);

您可以在此处阅读有关参数和方法的更多信息 https://laravel.com/api/5.5/Illuminate/Database/Eloquent/Builder.html#method_paginate

https://stackoverflow.com/questions/47526870/

相关文章:

prolog - swi-prolog 中的不相等操作

qt - Qt如何隐藏状态栏

macos - Launchd 无法访问 Mac OS 钥匙串(keychain)

amazon-web-services - AWS GLUE 数据导入问题

java - 没有数据时应该返回哪个http代码

php - php swagger注释jsonproperty中方括号的转义字符

html - 在 HTML 页面上组合 SVG 标签

loops - 循环 Fortran 中的字符

bash - 在 bash 中有条件地将命令的输出定向到/dev/null

listview - Xamarin.Forms:软键盘与页面底部的最后一个条目(滚动时)重叠