我在从laravel eloquent关系获取数据时遇到了一个逻辑错误 我有两个模型,客户机和组。

我在从laravel eloquent关系获取数据时遇到了一个逻辑错误 我有两个模型,客户机和组。,laravel,eloquent,laravel-5.8,Laravel,Eloquent,Laravel 5.8,这是多对多关系,其中客户端属于多个组,并且组具有多个客户端。 我想获取所有不属于某个组的客户端,并将其传递给视图 组模型: public function clients() { return $this->belongsToMany('App\Models\Client', 'client_group', 'group_id', 'client_id'); } 客户机型号: public function documents() { return

这是多对多关系,其中客户端属于多个组,并且组具有多个客户端。 我想获取所有不属于某个组的客户端,并将其传递给视图

组模型:

public function clients() {
        return $this->belongsToMany('App\Models\Client', 'client_group', 'group_id', 'client_id');
    }
客户机型号:

public function documents() {
        return $this->belongsToMany('App\Models\Document', 'client_document', 'client_id', 'document_id');
    }
GroupsController.php

public function edit($id)
    {
        $group = Group::find($id);
        $clients = Client::all()->where('user_id', Auth::user()->id);
        return view('backend.groups.edit', compact('group', 'id', 'clients'));
    }

如果我理解正确,您希望客户不属于某个组。基本上,您需要查询关系缺失:

$clients = App\Client::doesntHave('groups')->get();
如果您希望能够添加其他where子句:

use Illuminate\Database\Eloquent\Builder;

...

$clients = App\Client::whereDoesntHave('groups', function (Builder $query) {
    $query->where('active', '=', true);
})->get();
有关更多信息,请参阅