@Stas1995

Не работает whereIn если данных больше 700,почему так?

//тут вытаскиваются id всех пользователей
$user_ids= array_column($query->toArray(), 'id');

        // Формирование модели и превращение онного в массив user_id=> created_at
        $userPosts=
            Post::select('user_id', DB::raw("min(period_start) as created_at"))
                ->whereIn('user_id', $user_ids)
                ->groupBy('user_id')
                ->get()
                ->keyBy('user_id')
                ->toArray();
        dd($userPosts);


если в $user_ids данных меньше 700 все работает корректно,но если данных больше 700

то в dd($userPosts); прилетает пустой массив
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 3
iMedved2009
@iMedved2009
Не люблю людей
$userPosts=
Post::select('user_id', DB::raw("min(period_start) as created_at"))
->whereIn('user_id', function($query){
                  return $query->from('users') 
                     ->select('users.id');
            }) 
->groupBy('user_id')
->get()
->keyBy('user_id')
->toArray();
dd($userPosts);
Ответ написан
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
В базах данных есть лимиты на число подстановочных элементов.

Если вы пытаетесь запросить 700 критериев - это значит вы неверно выполняете задачу (хотя кажется, что все верно).

700 критериев вы откуда-то взяли. Если вы взяли их из базы - используйте ответ Дмитрия, он берет айдишки прямо из базы, в итоге критерий получается вообще один.

Если вы взяли ваши критерии из файла, то вам следует разбить ваш запрос на повторяющийся с меньшим числом критериев, "делать по 100", например.
Ответ написан
Ваш ответ на вопрос

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

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