@F0maX

Как мне построить «строгий» whereIn в laravel eloquent builder?

Приветствую, как мне построить "строгий" whereIn запрос?

У меня есть polymorphic manyToMany отношение, с categories, documents и categoryables таблицами.

У меня есть корректные данные в categoriables таблице:

id category_id categoryable_type categoryable_id
26 4 "App\Models\Document" 7
27 5 "App\Models\Document" 7
28 4 "App\Models\Document" 8
29 5 "App\Models\Document" 8
30 10 "App\Models\Document" 8


Делая следующий запрос:

Document::whereRelation( 'categories', fn ( Builder $builder ) => $builder
    ->whereIn( 'category_id', [10,5] ) ) )->get();


я получаю documents с ids: 7 и 8.

Делая такой запрос:

Document::whereRelation( 'categories', fn ( Builder $builder ) => $builder
    ->where( 'category_id', '=', 5 )->where( 'category_id', '=', 10 ) ) )->get();


Я не получаю результат. Точнее пустой результат.

Я хочу получить documents, которые имеют обе категории одновременно - category_id 5 AND 10 ...

Как мне достичь этого?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
Document::whereHas('categories', function ( $query){
            $query->whereIn('resource_category_id', [10,5]);
 }, '>', 1)->get();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы