加载关系的ids(采摘)

时间:2017-10-03 19:48:08

标签: laravel laravel-5.5

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

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

列出所有宠物。我有许多关系,许多用户可以拥有同一只宠物(宠物的人类家庭)。

我想加载这些用户。

执行return Pet::with('users')->get();可以解决问题,但它会加载所有类型的过度信息,例如用户api_token等,我只想选择一些字段,例如id和name:

我希望在上面的屏幕截图中获得users: [1, 12]示例。

我尝试过这样的return Pet::with('users')->get()->pluck('id'),但这只给了我一些ID。

2 个答案:

答案 0 :(得分:2)

如果您只想获取所有匹配用户至少有一只宠物的用户ID,您可以尝试:

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

如果我误解了您并且您仍然想要所有Pet信息,您可以使用冒号来获取关系中的特定列:

// Returns all Pets, along with their users' IDs
return Pet::with('users:id')->get();

答案 1 :(得分:2)

您可以选择以下特定字段:

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