Definición de columnas - ColumnDefinition Class

La clase ColumnDefinition proporciona un conjunto de métodos para la creación de campos de base de datos y relaciones entre tablas en las migraciones. Estos métodos facilitan la definición precisa y eficiente de la estructura de la base de datos.

Métodos disponibles

A continuación se muestran algunos de los métodos disponibles en la clase ColumnDefinition y su uso común:

  • id(): Este método agrega un campo id a la definición de la tabla. El campo es de tipo BIGINT UNSIGNED y se define como clave primaria con la opción AUTO_INCREMENT, lo que significa que el valor se incrementa automáticamente para cada nuevo registro.
  • string(): Este método agrega un campo de tipo cadena de caracteres a la definición de la tabla. Puedes especificar un nombre y una longitud opcional para el campo.
  • timestamps(): Este método agrega dos campos a la definición de la tabla: created_at y updated_at. Ambos campos son de tipo DATETIME y tienen valores predeterminados que se establecen automáticamente al crear o actualizar un registro.
  • unsignedBigInteger(): Este método agrega un campo de tipo BIGINT UNSIGNED a la definición de la tabla. Este tipo de campo se utiliza comúnmente para almacenar valores enteros grandes que no pueden ser negativos.
  • integer(): Este método agrega un campo de tipo entero a la definición de la tabla. Puedes especificar un nombre y una longitud opcional para el campo.
  • boolean(): Este método agrega un campo de tipo booleano a la definición de la tabla. Internamente, se representa como un TINYINT(1) donde 0 representa false y 1 representa true.
  • enum(): Este método agrega un campo de tipo enumerado a la definición de la tabla. Puedes especificar un nombre para el campo y una lista de valores válidos que puede tener el campo.
  • text(): Este método agrega un campo de tipo texto a la definición de la tabla. Este tipo de campo se utiliza para almacenar texto largo.
  • decimal(): Este método agrega un campo de tipo decimal a la definición de la tabla. Puedes especificar un nombre para el campo y la precisión y escala del campo decimal.
  • float(): Este método agrega un campo de tipo flotante a la definición de la tabla. Puedes especificar un nombre para el campo y la precisión y escala del campo flotante.
  • foreign(): Este método agrega una cláusula FOREIGN KEY a la definición de la tabla. Se utiliza para establecer una relación de clave externa con otra tabla.
  • references(): Este método completa la cláusula FOREIGN KEY agregada con el método foreign(), especificando la tabla y columna a la que hace referencia la clave externa.
  • onUpdate(): Este método se utiliza para especificar la acción a realizar cuando se actualiza un registro relacionado con la clave externa. Por defecto, la acción es CASCADE.
  • onDelete(): Este método se utiliza para especificar la acción a realizar cuando se elimina un registro relacionado con la clave externa. Por defecto, la acción es CASCADE.
  • generate(): Este método devuelve la definición de columna generada hasta el momento. Debe ser llamado al final de la definición de la columna para obtener la definición completa.

Estos son solo algunos ejemplos de los métodos disponibles en la clase ColumnDefinition.

Ejemplo de uso

En este apartado daremos un ejemplo de uso de la clase ColumnDefinition.

Ejemplo de la función integer()

En este ejemplo haremos uso de la función integer() para agregar un campo de tipo de entero a la definición de la tabla. El método espera como parámetros el nombre del campo y la longitud del campo, por defecto el valor de la longitud es 11.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->integer('name')->generate();
 
// Result will be:
// $field = '`name` INT(11)';

Ejemplo de la función unsignedBigInteger()

En este ejemplo haremos uso de la función unsignedBigInteger() para agregar un campo de tipo de clave primaria a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->unsignedBigInteger('id')->generate();
 
// Result will be:
// $field = '`id` BIGINT UNSIGNED';

Ejemplo de la función string()

En este ejemplo haremos uso de la función string() para agregar un campo de tipo de cadena a la definición de la tabla. El método espera como parámetros el nombre del campo y la longitud del campo, por defecto el valor de la longitud es 255.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->string('name')->generate();
 
// Result will be:
// $field = '`name` VARCHAR(255)';

Ejemplo de la función text()

En este ejemplo haremos uso de la función text() para agregar un campo de tipo de cadena a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->text('field')->generate();
 
// Result will be:
// $field = '`field` TEXT';

Ejemplo de la función decimal()

En este ejemplo haremos uso de la función decimal() para agregar un campo de tipo de decimal a la definición de la tabla. El método espera como parámetros el nombre del campo y la precisión y escala del campo decimal. Por defecto la precisión es 10 y la escala es 0.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->decimal('field_name', 10, 2)->generate();
 
// Result will be:
// $field = '`field_name` DECIMAL(10, 2)';

Ejemplo de la función float()

En este ejemplo haremos uso de la función float() para agregar un campo de tipo flotante a la definición de la tabla. El método espera como parámetros el nombre del campo, la precisión y la escala del campo flotante. Por defecto la precisión es 10 y la escala es 0.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->float('field_name', 10, 2)->generate();
 
// Result will be:
// $field = '`field_name` FLOAT(10, 2)';

Ejemplo de la función boolean()

En este ejemplo haremos uso de la función boolean() para agregar un campo de tipo de booleano a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->boolean('status')->generate();
 
// Result will be:
// $field = '`status` TINYINT(1)';

Ejemplo de la función timestamp()

En este ejemplo haremos uso de la función timestamp() para agregar un campo de tipo de tiempo a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->timestamp('field')->generate();
 
// Result will be:
// $field = '`field` DATETIME';

Ejemplo de la función timestamps()

En este ejemplo haremos uso de la función timestamps() para agregar un campo de tipo de tiempo a la definición de la tabla. El método no requiere parámetros.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->timestamps()->generate();
 
// Result will be:
// $field = '`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP';

Ejemplo de la función dateTime()

En este ejemplo haremos uso de la función dateTime() para agregar un campo de tipo de fecha a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->dateTime('field')->generate();
 
// Result will be:
// $field = '`field` DATETIME';

Ejemplo de la función date()

En este ejemplo haremos uso de la función date() para agregar un campo de tipo de fecha a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->date('field')->generate();
 
// Result will be:
// $field = '`field` DATE';

Ejemplo de la función time()

En este ejemplo haremos uso de la función time() para agregar un campo de tipo de tiempo a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->time('field')->generate();
 
// Result will be:
// $field = '`field` TIME';

Ejemplo de la función json()

En este ejemplo haremos uso de la función json() para agregar un campo de tipo de JSON a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->json('field')->generate();
 
// Result will be:
// $field = '`field` JSON';

Ejemplo de la función enum()

En este ejemplo haremos uso de la función enum() para agregar un campo de tipo de cadena a la definición de la tabla. El método espera como parámetros el nombre del campo y un arreglo de valores.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->enum('status', ['active', 'inactive'])->generate();
 
// Result will be:
// $field = '`status` enum(\'active\', \'inactive\')';

Ejemplo de la función blob()

En este ejemplo haremos uso de la función blob() para agregar un campo de tipo de Blob a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->blob('field')->generate();
 
// Result will be:
// $field = '`field` BLOB';

Ejemplo de la función tinyBlob()

En este ejemplo haremos uso de la función tinyBlob() para agregar un campo de tipo de Blob a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->tinyBlob('field')->generate();
 
// Result will be:
// $field = '`field` TINYBLOB';

Ejemplo de la función longBlob()

En este ejemplo haremos uso de la función longBlob() para agregar un campo de tipo de Blob a la definición de la tabla. El método espera como parámetros el nombre del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->longBlob('field')->generate();
 
// Result will be:
// $field = '`field` LONGBLOB';

Ejemplo de la función char()

En este ejemplo haremos uso de la función char() para agregar un campo de tipo de cadena a la definición de la tabla. El método espera como parámetros el nombre del campo y el número de caracteres del campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->char('name', 5)->generate();
 
// Result will be:
// $field = '`name` CHAR(5)';

Ejemplo de la función real()

En este ejemplo haremos uso de la función real() para agregar un campo de tipo de real a la definición de la tabla. El método espera como parámetros el nombre del campo, la precisión y la escala.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->real('name', 10, 2)->generate();
 
// Result will be:
// $field = '`name` REAL(10,2)';

Ejemplo de la función set()

En este ejemplo haremos uso de la función set() para agregar un campo de tipo de conjunto a la definición de la tabla. El método espera como parámetros el nombre del campo y el conjunto de valores.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->set('name', ['Value 1', 'Value 2'])->generate();
 
// Result will be:
// $field = '`name` SET(\'Value 1\', \'Value 2\')';

Ejemplo de la función default()

En este ejemplo haremos uso de la función default() para agregar un campo de tipo de valor por defecto a la definición de la tabla. El método espera como parámetros el nombre del campo y el valor por defecto. Como recomendación el valor de defecto debe ir después de crear el tipo de campo.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->string('name')->default('default value')->generate();
 
// Result will be:
// $field = '`name` VARCHAR(255) DEFAULT 'default value';

Ejemplo de la función nullable()

En este ejemplo haremos uso de la función nullable() para agregar un campo de tipo de valor nulo a la definición de la tabla.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->string('name')->nullable()->generate();
 
// Result will be:
// $field = '`name` VARCHAR(255) NULL';

Ejemplo de la función notNullable()

En este ejemplo haremos uso de la función notNullable() para agregar un campo de tipo de valor no nulo a la definición de la tabla.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->string('name')->notNullable()->generate();
 
// Result will be:
// $field = '`name` VARCHAR(255) NOT NULL';

Ejemplo de la función autoIncrement()

En este ejemplo haremos uso de la función autoIncrement() para agregar un campo de tipo de valor auto incremental a la definición de la tabla.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->integer('name')->autoIncrement()->generate();
 
// Result will be:
// $field = '`name` INT(11) AUTO_INCREMENT';

Ejemplo de la función primary()

En este ejemplo haremos uso de la función primary() para agregar un campo de tipo de clave primaria a la definición de la tabla.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->integer('name')->primary()->generate();
 
// Result will be:
// $field = '`name` INT(11) PRIMARY KEY';

Ejemplo de la función unique()

En este ejemplo haremos uso de la función unique() para agregar un campo de tipo de valor unico a la definición de la tabla.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->integer('name')->unique()->generate();
 
// Result will be:
// $field = '`name` INT(11) UNIQUE';

Ejemplo de la función index()

En este ejemplo haremos uso de la función index() para agregar un campo de tipo de indice a la definición de la tabla.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->integer('name')->index()->generate();
 
// Result will be:
// $field = '`name` INT(11) INDEX';

Ejemplo de la función fullText()

En este ejemplo haremos uso de la función fullText() para agregar un campo de tipo fullText a la definición de la tabla.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->fullText('field')->generate();
 
// Result will be:
// $field = '`field` FULLTEXT';

Ejemplo de la función comment()

En este ejemplo haremos uso de la función comment() para agregar un comentario a la definición de la tabla. El método espera como parámetros el valor del comentario.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->text('field')->comment('comment')->generate();
 
// Result will be:
// $field = '`field` TEXT' COMMENT 'comment';

Ejemplo de la función id()

En este ejemplo haremos uso de la función id() para agregar un campo de tipo de clave primaria a la definición de la tabla.

                
                
$columnDefinition = new ColumnDefinition();
 
$field = $columnDefinition->id()->generate();
 
// Result will be:
// $field = '`id` BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT';