skip to Main Content

I’m working with Laravel 9 and I have used this column at users table for storing user mobile phone number:

$table->integer('usr_mobile_phone');

And at the factor, I tried this to fill out this column:

public function definition()
    {
        $fs = '091';
        $ch = '1234567890';
        $str = $fs.str_shuffle($ch);

        return [
            'usr_mobile_phone' => $str
            ...
        ];
    }

But when I run php artisan db:seed, I get this error:

SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column ‘usr_mobile_phone’ at row 1

So what’s going wrong here?

How can I store the number properly at the user’s mobile phone number column in the DB?

2

Answers


  1. I usually use varchar type for phone numbers, as if i will use + character it will not be valid in integer, and it will remove the 0 in the beginning if it was integer, so make it varchar

    Login or Signup to reply.
  2. It’s because integer has a maximum range of 2147483647 and minimum -2147483648 if it is signed (- / +) and maximum of 4294967295 and minimum of 0 when it is not. So inserting a phone number that usually has a 11 digits exceed its maximum value and depends on how your number is formatted like @Amjad said you cannot put a string in an integer column so using a varchar or $table->string() in laravel is a good idea.

    Integer Types (Exact Value) – INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search