Что такое состояние подсчета отношений в WhereHas Laravel

У меня проблемы с пониманием условия подсчета отношений в 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, может быть, приведение примера было бы очень полезным.

9
задан hhsadiq 25 July 2015 в 07:39
поделиться