Laravel Eloquent:如何仅从联接表中获取某些列

2022-08-30 07:31:03

我在Eloquent中有2个连接的表,即主题和用户。

主题模型:

public function user() {
  return $this->belongs_to('User');
}

用户型号:

public function themes() {
  return $this->has_many('Theme');
}

我的雄辩 api 调用如下所示:

return Response::eloquent(Theme::with('user')->get());

它返回来自主题的所有列(这很好),以及来自user的所有列(不行)。我只需要用户模型中的“用户名”列,如何将查询限制为该列?


答案 1

更改模型以指定要选择的列:

public function user() {
  return $this->belongs_to('User')->select(array('id', 'username'));
}

不要忘记包含您要加入的列。


答案 2

对于拉拉维尔>= 5.2

使用 ->pluck() 方法

$roles = DB::table('roles')->pluck('title');

如果要检索包含单个列值的数组,可以使用 pluck 方法


对于拉拉维尔<= 5.1

使用 ->lists() 方法

$roles = DB::table('roles')->lists('title');

此方法将返回角色标题的数组。您还可以为返回的数组指定自定义键列:


推荐