Вообщем решение довольно простое. К запросу добавляем следующее
$products->WhereHas('attrs', function($q){
$q->where('value', '3' );
});
В конечном итоге запрос, который решает мою проблему, будет выглядеть следующим образом:
ModelProduct::whereIn('category',$cats)->whereHas('attrs', function($q){
$q->where('column', 'value');
})->latest()->get();
Прописывать withPivot в отношении attrs, совсем не обязательно, можно так
public function attrs($q)
{
return $this->belongsToMany('\App\Models\ModelAttributes','products_attributes','product_id','attribute_id')->withPivot('value');
}
а можно так
public function attrs($q)
{
return $this->belongsToMany('\App\Models\ModelAttributes','products_attributes','product_id','attribute_id');
}
Но учтите, если вы хотите получить доступ к свойствам промежуточной модели, то в отношении нужно указывать withPivot('поля к которым хотите получить доступ')
Очень рад, что сам нашел решение, но тостер все еще замечательный, удобный и полезный резурс. Надеюсь, кому-то будет полезно.