LaravelでwhereInの引数の配列が大きいと動作しない

LaravelのEloquentを使っていて、whereInの引数の配列が大きいとき、クエリーは正しく動作しない。

$array = ['1', '2', ..., '1500'];
$query = Customer::whereIn('id', $array)->get();

Eloquentは内部でPDO::prepare()を使っている。
PDO::prepare()はIN()句の最適化を行うが、データベースがMySQL・MariaDBのとき、配列のサイズがin_predicate_conversion_threshold(デフォルト値は1000)を超えるとエラーが発生するとのこと。

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください