2014-09-10 70 views
8

我一直在四處搜尋,問題被問了幾次,但似乎沒有人能夠給出明確的答案。如何使用Schema爲表格列指定整數長度?一個整數的Schema Builder長度

我見過有人提示:

$table->integer('post')->length(11); 

但是,這並不工作 - 至少在Laravel 4.2 - 它仍然產生列int(10)

是否有一個內置的方法來指定整數長度?

+1

這是否有任何機會涉及創建表之間的外鍵? – jeteon 2015-03-25 02:18:44

回答

15

如果您使用MySQL,則無法指定整數列的長度。您只能在http://dev.mysql.com/doc/refman/5.1/en/integer-types.html之間選擇一種可用的整數類型。

因此,您不能在Laravel中設置整數長度。您只能選擇http://laravel.com/docs/schema#adding-columns中描述的可用類型之一。

+2

但MySQL的整數長度上升到11 - 而不是10,這似乎是默認的?對於TINYINT而言,最高可達4等。 – 2014-09-10 18:56:44

+11

對於有符號整數,最高可達11。對於無符號整數(然後我的意思是'INT'類型),它最多可以達到10個。 – lowerends 2014-09-10 18:59:36

+1

有意義 - 謝謝,儘管無法指定長度是一種遺憾 - 但在某些情況下它可能很有用。 – 2014-09-10 19:02:35

0

以爲我會創建一個易於複製和粘貼的一般情況表。
簽名,如果你需要負值和無符號,如果你

 
| 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 | 

對於較大的整數類型,請參閱:https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

1

我猜,要指定長度爲10(聲明外鍵時),以適應增量ID。如果是這樣,那麼你必須使用:

$table->unsignedInteger('some_id_reference'); 
相關問題