У меня проблемы с пониманием условия подсчета отношений в WhereHas . Страница документации не обсуждает это, но страница API говорит об этом. Цитата из API.
Builder | Builder whereHas (строка $ отношение, обратный вызов $ Closure, строка $ operator = '> =', int $ count = 1)
Добавить условие подсчета отношений в запрос с помощью где статьи.
Пример
Модель Resource
имеет отношение «Многие ко многим» к ResourceCategory
public function categories()
{
return $this->belongsToMany('ResourceCategory', 'resource_category_mapping');
}
Условие отношения в Has
Условие отношений в Имеет работает, как ожидалось.
Resource::has('categories', '>', 1)->get()
//this return all resources which have more than one catgories
Условие отношений в WhereHas
Условие отношений в WhereHas работает не так, как ожидалось. Я уверен, что неправильно понял.
Resource::whereHas('categories', function ( $query){
$query->whereIn('resource_category_id', [1, 2, 4]);
}, '>', 1)->get()
Приведенный выше код должен возвращать ресурсы, категории которых относятся к одной из [1, 2, 4], и ресурс имеет более одной категории. Но это не так.
Вопрос
Пожалуйста, объясните условие взаимоотношений в WhereHas, может быть, приведение примера было бы очень полезным.