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






Используя красноречивый:
Отношения: в модели 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();