Eloquent whereIn et whereNotIn
Bonjour à toutes et à tous,
Petite question. J'ai l'impression qu'il y a pas mal de limitation dans l'utilisation des clauses whereIn et whereNotIn que se soit en SQL ou avec Eloquent. Limitation dans le nombre d'éléments qu'on peut passer dans la clause.
Petit exemple : Je récupère toutes les catégories actives, je les mélange, je sélectionne les 12 premières que je passe à selected = 1 et les autres à selected = 0 afin de pouvoir modifier chaque mois les catégories à mettre en avant.
$categories = Category::where('visible', '1')->pluck('id')->toArray();
shuffle($categories);
$selected = array_slice($categories, 0, 12);
$updated = Category::whereIn('id', $selected)->update(['selected' => 1]);
$updated = Category::whereNotIn('id', $selected)->update(['selected' => 0]);
Ici, si j'ai trop d'éléments dans le WhereIn ou WhereNotIn, la clause Where n'est pas prise en compte. Pour contourner le souci, j'ai juste mis à jour mariadb ce qui a augmenté la limite. Mais je me dis que ce n'est peut-être pas la meilleure solution.
Qu'en pensez-vous et que proposeriez-vous ?
Merci à vous ! :)
Bonjour,
Je ne pense pas que ce soit une limitation de Laravel. J'ai un projet de base de données PostgreSQL utilisant whereIn avec plus d'un millier d'évaluateurs.
On peut supposer que ce problème est lié à la limite de taille de la requête SQL d'un serveur de base de données particulier.
Essayez de suivre la requête. Qu'est-ce qui est exactement transmis au serveur SQL ? Si la requête IN ou NOT IN est correcte, essayez d'exécuter cette requête via l'application cliente.
Vous ne pouvez pas répondre à ce sujet.