4
votes

Comment exécuter la clause where sur les colonnes de chaînes numériques dans Laravel?

Dans mon application Laravel, j'utilise une table dans laquelle il y a une colonne de chaîne pour stocker des nombres longs. Comment puis-je exécuter un whereBetwean sur le modèle concerné?

J'essaie ceci et cela ne fonctionne pas, le résultat n'est pas ce qu'il est censé être;

Model:whereBetween('number', [$startNumber, $endNumber])->get();


1 commentaires

veuillez spécifier les valeurs $ startnumber et $ endnumber.


3 Réponses :


-1
votes

whereBetween () ne fonctionne pas, car vous compareriez des chaînes, pas des nombres. Pour comparer des chaînes telles que des nombres, vous devez d'abord les convertir.

Model::query()
  ->whereRaw('CONVERT(`number`, BIGINT) BETWEEN ? AND ?', [$startNumber, $endNumber])
  ->get();


0 commentaires

1
votes

J'espère que cela aide

Model::whereRaw('CAST(`number` AS SIGNED) BETWEEN ? AND ?', [(int)$startNumber, (int)$endNumber])
    ->get();

J'ai essayé quelque chose de similaire de mon côté et cela a fonctionné.


0 commentaires

0
votes

essayez ceci

Model:whereBetween('number', [int($startNumber), int($endNumber)])->get();


0 commentaires