负载只是关系的IDS(动物内脏)(Load just ids of relation (pluck)

2019-09-26 15:24发布

我有一个简单的应用程序,使用Laravel 5.5.13。

public function index()
{
    return Pet::all();
}

这将列出所有的宠物。 我有很多很多的关系,许多用户可以拥有一个相同的宠物(宠物的人族)。

我想加载这些用户。

这样做return Pet::with('users')->get(); 是卓有成效的,但它加载所有类型的过度infromation的,喜欢的网友api_token等,我只是想挑一些领域,如ID和名称:

我希望只得到users: [1, 12]在上面的截图的例子。

我尝试的勇气这样的return Pet::with('users')->get()->pluck('id')但是这给了我唯一的ID。

Answer 1:

如果你只希望得到所有匹配的用户至少有一个宠物的用户ID,您可以试试:

// Retrieve all users that have at least one pet
return User::has('pets')->get(['id']);

如果我误解你,你还是希望所有的宠物信息,您可使用一个冒号的关系来获取特定的列:

// Returns all Pets, along with their users' IDs
return Pet::with('users:id')->get();
  • 关系查询 ,查询的关系存在
  • 预先加载 ,预先加载特定的列


Answer 2:

您可以选择这样的特定字段:

Pet::with(['users' => function($query) { $query->select('id', 'name'); }])->get()


文章来源: Load just ids of relation (pluck)