2014-09-10 11 views
8

Ho cercato in giro e la domanda è stata posta alcune volte, ma nessuno sembra essere in grado di dare una risposta definitiva ad esso. Come si specifica la lunghezza intera della colonna della tabella usando Schema?Schema Builder length of an integer

Ho visto qualcuno che suggerisce:

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

Ma che non funziona - almeno con laravel 4.2 - produce ancora la colonna come int(10).

Esiste un metodo integrato per specificare la lunghezza intera?

+1

È questo per caso collegato alla creazione di chiavi esterne tra le tabelle? – jeteon

risposta

15

Se si utilizza MySQL, non è possibile specificare la lunghezza di una colonna di numeri interi. Puoi scegliere solo tra uno dei tipi di interi disponibili, descritto allo http://dev.mysql.com/doc/refman/5.1/en/integer-types.html.

Quindi, non è possibile impostare la lunghezza intera in Laravel. È possibile scegliere solo uno dei tipi disponibili descritti a http://laravel.com/docs/schema#adding-columns.

+2

Ma la lunghezza intera di MySQL sale a 11 - non 10, che sembra essere quella predefinita? Lo stesso per TINYINT che sale fino a 4 ecc. –

+11

Si va fino a 11 per interi con segno. Per interi senza segno (e quindi intendo il tipo 'INT'), sale a 10. – lowerends

+1

Ha senso - grazie, anche se è un peccato che non si possa specificare la lunghezza - potrebbe essere utile in alcuni scenari. –

0

Pensavo di creare una tabella di situazioni generali facile da copiare e incollare.
Signed Se fai richiedono valori negativi e unsigned se non si.

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

Per i tipi di interi più grandi, vedi: https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

1

Sto indovinando che si desidera specificare una lunghezza di 10 per abbinare un id incremento (quando si dichiara chiavi esterne). Se è così allora devi usare:

$table->unsignedInteger('some_id_reference');