Вы на правильном общем пути, но ваш whereHas
не может найти в bar
ничего, что не существует. Попробуйте этот подход вместо:
$id = Foo::with('bar')
->whereHas('bar', function ($q) {
$q->where('test', '=', 0);
}
->orWhereDoesntHave('bar')
->get();
Теперь вы ищете Foo
, который имеет bar
, где test
равен 0
, или который не имеет bar
.