web-dev-qa-db-fra.com

Schéma Builder longueur d'un entier

J'ai fait des recherches et la question a été posée à quelques reprises, mais personne ne semble être en mesure de donner une réponse définitive à cette question. Comment spécifiez-vous la longueur entière de la colonne de table à l'aide de Schema?

J'ai vu quelqu'un suggérer:

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

Mais cela ne fonctionne pas - du moins avec Laravel 4.2 -, la colonne est toujours produite sous la forme int(10).

Existe-t-il une méthode intégrée permettant de spécifier la longueur entière?

10
Spencer Mark

Si vous utilisez MySQL, vous ne pouvez pas spécifier la longueur d'une colonne entière. Vous ne pouvez choisir qu’un des types d’entiers disponibles, décrits à http://dev.mysql.com/doc/refman/5.1/en/integer-types.html

Par conséquent, vous ne pouvez pas non plus définir la longueur entière dans Laravel. Vous ne pouvez choisir qu’un des types disponibles décrits dans http://laravel.com/docs/schema#adding-columns .

15
lowerends

Je suppose que vous voulez spécifier une longueur de 10 pour correspondre à un identifiant d'incrémentation (lors de la déclaration de clés étrangères). Si oui, alors vous devez utiliser:

$table->unsignedInteger('some_id_reference');
3
omarjebari

Je pensais créer un tableau facile à copier-coller pour des situations générales.
Signé si vousdonécessite des valeurs négatives et non signé si vousne le faites pas.

 | Type | Eloquent (Générateur de Schéma) | Min | Max | 
 | ------------------- | ----------------------------------------- | ------- | ------ | 
 | TINYINT (Signé) | $ table-> signedTinyInteger ('foo') | -128 | 127 | 
 | TINYINT (non signé) | $ table-> unsignedTinyInteger ('foo') | 0 | 255 | 
 | Petit bout (signé) | $ table-> signedSmallInteger ('foo') | -32768 | 32767 | 
 | SMALLINT (non signé) | $ table-> unsignedSmallInteger ('foo') | 0 | 65535 | 

Pour les types Integer plus volumineux, voir: https://dev.mysql.com/doc/refman/5.5/fr/integer-types.html

1
Grant
$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

0
Berthold Feujo

Maintenant, dans 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)
0
LowLevel