Repository navigation
french Adding Columns
Le framework de migration délègue toutes les opérations à l'adaptateur de votre RDBMS, qui crée le SQL exacte dont à besoin votre RDBMS.
Parce que les migrations sont portables sur RDMBSs, les définitions des tables et des colonnes doivent être exprimées dans un "langage" de niveau supérieur, et non en SQL spécifique aux RDBMS.
Cette page documente la syntaxe pour ajouter et modifier les colonnes dans votre base de données.
Toutes les colonnes dans une base de données sont vraiment spécifiques à des types généralisés.
Par exemple, un varchar (32) est simplement un string qui à une longueur max de 32.
Idem pour int (8), c'est juste un numéro avec une valeur maximale de 99999999.
Le framework peut profiter d'offrir des types généralisés (avec les mêmes défauts) et choisir la spécification des détails exacts.
NOTE: La documentation ci-dessous pour ajouter des colonnes est la même que vous ajoutiez
une colonne via l'objet TableDefinition (en utilisant la méthode column() sur l'objet retourné par createTable())
ou directement en utilisant la méthode addColumn.
Pour MySQL, les types supportés sont:
| Type générique | Type MySQL | Default length |
|---|---|---|
| string | varchar | 255 |
| text | text | |
| mediumtext | mediumtext | |
| integer | int | 11 |
| smallinteger | smallint | |
| biginteger | bigint | |
| float | float | |
| decimal | decimal | |
| datetime | datetime | |
| timestamp | timestamp | |
| time | time | |
| date | date | |
| binary | blob | |
| boolean | tinyint | 1 |
Tous les types de colonnes ont des valeurs par défaut pour les détails spécifiques.
Par exemple, toutes les colonnes déclarées string auront par défaut une taille de 255 caractères.
Hypothèses des valeurs par défaut Toutes les définitions de colonne commencent avec des hypothèses par défaut, que vous pouvez modifier au besoin.
- Colonnes ont
NULLpar défault
Voyons un exemple pour commencer (tous les exemples ci-dessous, on suppose que $users est le résultat de l'appel $this->createTable("users");):
Exemple A:
Créons une colonne nommée first_name avec par défaut une longueur de 255
caractères:
$users->column("first_name", "string");Ce qui génère le SQL:
`first_name` varchar(255) NULLExemple B:
Créons une colonne nommée first_name avec une longueur max de 32 caractères (
Create a column called first_name with a max-length of 32 (autorise implicitement les valeurs NULL):
$users->column("first_name", "string", array('limit' => 32));Ce qui génère le SQL:
`first_name` varchar(32) NULLExemple C:
Créons une colonne nommée first_name avec une longueur max de 64 caractères,
une valeur par défaut à 'mr.' et n'autorisant pas les valeurs NULL:
$users->column("first_name", "string", array('limit' => 64, 'default' => 'mr.', 'null' => false));Ce qui génère le SQL:
`first_name` varchar(64) DEFAULT 'mr.' NOT NULLExemple D:
Créons une colonne numérique nommée post_count avec une longueur max de 4
chiffres, une valeur par défaut à 0 et la valeur NULL non autorisée:
$users->column("post_count", "integer", array('limit' => 4, 'default' => 0, 'null' => false));Ce qui génère le SQL:
`post_count` integer(4) DEFAULT 0 NOT NULLExemple E:
Créons une colonne datetime nommée created_at et la valeur NULL non
autorisée:
$users->column("created_at", "datetime", array('null' => false));Ce qui génère le SQL:
`created_at` datetime NOT NULLExemple F:
Précisez votre propre clé clé primaire. Par défaut le framework va générer une
colonne 'id' comme clé primaire, mais si vous voulez spécifier votre propre
colonne clé primaire passez un booléen à true dans les options avec l'index
primary_key. Cela exige que vous spécifiez, à son tour 'id' => false dans
les options de createTable.
$t = $this->createTable('users', array('id' => false, 'options' => 'Engine=InnoDB'));
$t->column('guid', 'string', array('primary_key' => true));
$t->finish();