Reputation: 5311
I've been searching around and the question was asked a few times, but no-one seem to be able to give a definite answer to it. How do you specify the integer length for the table column using Schema?
I've seen someone suggesting:
$table->integer('post')->length(11);
But that doesn't work - at least with Laravel 4.2 - it still produces the column as int(10)
.
Is there a built in method to specify the integer length?
Upvotes: 19
Views: 36167
Reputation: 1340
Table 11.1 Required Storage and Range for Integer Types Supported by MySQL
I think it will help for you.
Upvotes: 0
Reputation: 5267
If you're using MySQL, you can't specify the length of an integer column. You can only choose between one of the available integer types, described at http://dev.mysql.com/doc/refman/5.1/en/integer-types.html.
Hence, you cannot set the integer length in Laravel either.
You can only choose one of the available types described at Laravel 4.2 Database Migration Creating Column.
Upvotes: 20
Reputation: 11
yes, it is possible to change the length of a default column by using:
$table->string('any_text',35)->change();
you can also make it nullable by using:
$table->string('any_text',35)->nullable()->change();
I hope it works for you :)
Upvotes: -1
Reputation: 358
$table->bigInteger('variable');
$table->integer('variable');
$table->mediumInteger('variable');
$table->smallInteger('variable');
$table->tinyInteger('variable');
$table->unsignedBigInteger('variable');
$table->unsignedMediumInteger('variable');
$table->unsignedSmallInteger('variable');
$table->unsignedTinyInteger('variable');
https://laravel.com/docs/5.7/migrations
Upvotes: 0
Reputation: 1095
Now, in Laravel 5:
$table->addColumn('integer', 'post', ['length' => '10']); // Creates INT(10)
$table->addColumn('integer', 'post', ['length' => '10'])->unsigned(); // Creates Unsigned INT(10)
$table->unsignedInteger('post'); // Creates Unsigned INT(10)
$table->integer('post'); // Creates INT(11)
$table->integer('post')->unsigned(); // Creates Unsigned INT(11)
Upvotes: 2
Reputation: 5499
I'm guessing that you want to specify a length of 10 to match an increment id (when declaring foreign keys). If so then you have to use:
$table->unsignedInteger('some_id_reference');
Upvotes: 4
Reputation: 6329
Thought I'd create an easy-to-copy-and-paste for general situations table.
Signed if you do require negative values and unsigned if you do not.
| Type | Eloquent (Schema Builder) | Min | Max | | ------------------- | ----------------------------------------- | ------- | ------ | | TINYINT (Signed) | $table->signedTinyInteger('foo') | -128 | 127 | | TINYINT (Unsigned) | $table->unsignedTinyInteger('foo') | 0 | 255 | | SMALLINT (Signed) | $table->signedSmallInteger('foo') | -32768 | 32767 | | SMALLINT (Unsigned) | $table->unsignedSmallInteger('foo') | 0 | 65535 |
For larger Integer types, see: https://dev.mysql.com/doc/refman/5.5/en/integer-types.html
Upvotes: 14