How to run where clause on numeric string columns in Laravel?

Viewed 2157

In my Laravel app I use a table in which there is a string column to store long numbers. How can I run a whereBetwean on the relevant Model?

I try this and it doesn't work, the result is not what it supposed to be;

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

I hope this helps

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

I have tried something similar on my end and it worked.

try this

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

whereBetween() doesn't work, because you'd be comparing strings, not numbers. In order to compare strings like numbers, you need to convert them first.

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