Laravel:获取多对多关系中的相关项目

msc*_*egg 2 php laravel laravel-5 laravel-5.2

是否有可能在Laravel中以多对多的关系获得与特定实例无关的所有项目?

例:

我有两个型号,UserPet.他们有很多关系,因为用户可以拥有许多宠物,但宠物可以属于更多用户.

但我想要一份特定用户没有的宠物清单.

怎么可能?

编辑以上只是一个例子,因此与我当前的任务无关.用户和宠物解释起来更简单.但要说明:

PETS TABLE:
ID TYPE
1  Dog
2  Cat
3  Rabit
4  Horse
5  Rat
6  Bat
7  Bird

USERS TABLE:
ID NAME
1  Martin
2  Peter
3  Viggo

PET_USER TABLE:
ID PET USER
1  1   1
2  3   1
3  5   1
Run Code Online (Sandbox Code Playgroud)

然后马丁有一只狗,一只兔子和一只老鼠.

但我想要一份他没有的宠物清单:猫,马,蝙蝠和鸟

The*_*pha 8

你可以试试这个(你的问题对我来说听起来有些混乱):

$pets = Pet::with('users')->whereDoesntHave('users', function($query) use ($id) {
    $query->where('user', $id);
})->get();
Run Code Online (Sandbox Code Playgroud)

另外,尝试这个(如果你想):

$pets = Pet::with('users')->whereHas('users', function($query) use ($id) {
  $query->where('user', '!=', $id);
})->get();
Run Code Online (Sandbox Code Playgroud)