Vamos a conocer como podemos emplear los enums para definir nuestros tipos en la base de datos en CodeIgniter 4; los cuales son una estructura sencilla y con cierta flexibilidad que podemos emplear en lugar de las relaciones foráneas que requieren de una estructura mayor.
Los enums son una estructura muy sencilla que nos permite definir un conjunto de valores fijos para una columna, la definimos como si fuera un array, por lo tanto, el valor del registro que queramos insertar tiene que estar comprendido en ese pool de datos que definimos como un array.
Vamos a definir una migración como la siguiente:
class ProductsControl extends Migration
{
public function up()
{
$this->forge->addField([
'id' => [
'type' => 'INT',
'unsigned' => TRUE,
'auto_increment' => TRUE
],
'count' => [
'type' => 'INT',
'constraint' => 5,
'unsigned' => TRUE
],
'type' => [
'type' => 'ENUM',
'constraint' => ['exit', 'entry'],
'default' => 'entry',
],
]);
$this->forge->addKey('id', TRUE);
$this->forge->createTable('products_control');
}
public function down()
{
$this->forge->dropTable('products_control');
}
}
Explicación del código anterior
Es una migración NORMAL en CodeIgniter 4, lo importante en esta publicación, es la llamada type:
'type' => [
'type' => 'ENUM',
'constraint' => ['exit', 'entry'],
'default' => 'entry',
],
En la cual definimos en el constraint, como un array, en la cual definimos el pool de datos, en este caso, estamos indicando que type, solamente puede contener uno de los siguientes valores 'exit', 'entry'; le definimos un valor por defecto, y poco más.
Como puedes ver, tenemos cualquier estructura o columnas que quieras definir, y el enum, el cual no es más que una definición común en C4 con un array que define los valores que puedes usar 'exit' y 'entry'
El resto de tus columnas, pueden tener la estructura que tu quieras, que necesitas tu aplicación, y para este ejemplo no es importante.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter