Значение проверки Laravel для одной конкретной записи в отношениях hasMany в построителе запросов

Я пытаюсь добавить некоторую условную логику в свой построитель запросов, но изо всех сил пытаюсь найти правильную функцию, которую мне нужно искать...

Возьмите этот пример; У нас есть модель А, в которой много моделей Б. Model B содержит столбцы name и value. Теперь я хочу вернуть все модели As, у которых есть модель B с именем «score» и value > 50, И другая модель B с именем «group» и значением «debug».

Не прибегая к базовому PHP после того, как все модели будут возвращены, как мне фильтровать по конкретным отношениям hasMany в построителе запросов?

Спасибо заранее.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
845
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Используя красноречивый:

Отношения: в модели A:

public function b()
{
   return $this->hasMany(B::class);
}
A::whereHas('b', function($b) {
   $b->where(function($query) {
       $query->whereName('score')
             ->where('value', '>', 50);
       })
    ->orWhere(function($query) {
        $query->whereName('group')
              ->where('value', 'debug');
     });
  })->get();


Использование построителя запросов:

\DB::table('a')->join('b', function ($join) {
            $join->on('a.id', '=', 'b.a_id');
        })->where(function ($q) {
            $q->where('b.name', 'score')
                ->where('b.value', '>', 50);
        })->orWhere(function ($q) {
            $q->where('b.name', 'group')
                ->where('b.value', 'debug');
        })
        ->get();

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