Я столкнулся с логической ошибкой при извлечении данных из красноречивого отношения laravel

У меня есть две модели Client и Group.

Это отношения многие ко многим, когда клиент принадлежит ко многим группам, а группы имеют более одного клиента. Я хочу получить всех клиентов, которые еще не принадлежат к группе, и передать их в представление.

Групповая модель:

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');
    }

Группконтроллер.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'));
    }
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я правильно понимаю, вам нужны клиенты, не входящие в группу. По сути, вам нужно запросить отсутствие отношений:

$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();

Для получения дополнительной информации см. Запрос отношений

Другие вопросы по теме