2015-09-03 6 views
1

Мои модели созданы следующим образом:Как использовать агрегат в Laravel Eloquent whereHas запрос

A ProducthasManyProductOption с и ProductOptionbelongsTo одного Option.

Я пытаюсь запросить Product с, которые имеют по крайней мере 2 ProductOption S, которые принадлежат Option с, которые не содержат строку Oversized Shipping в названии.

Вот что я до сих пор:

Product::whereHas('productOptions', function($q) { 
    $q->whereHas('option', function($q) { 
     $q->where('name', 'not like', '%Oversized Shipping%'); 
    }); 
}) 
->get(); 

Как я могу добавить ограничение, которое должно быть по крайней мере два действительных ProductOption s?

ответ

1

whereHas Метод takes additional arguments just for this:

$products = Product::whereHas('productOptions', function ($q) { 
    $q->whereHas('option', function ($q) { 
     $q->where('name', 'not like', '%Oversized Shipping%'); 
    }); 
}, '>=', 2)->get();