Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Schema Builder length of an integer

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?

like image 524
Spencer Mark Avatar asked Sep 10 '14 18:09

Spencer Mark


2 Answers

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.

like image 150
lowerends Avatar answered Oct 24 '22 09:10

lowerends


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

like image 34
Grant Avatar answered Oct 24 '22 10:10

Grant