Dans CodeIgniter, les types des champs, en particulier lorsqu'il s'agit de travailler avec des bases de données, sont principalement définis dans deux contextes : lors de la création ou de la modification de tables via les migrations ou le forgeage de base de données, et lors de la définition des règles de validation pour les données entrantes dans les formulaires.

1. Migrations et Forgeage de Base de Données

Lorsque vous créez ou modifiez des tables de base de données en utilisant les migrations ou le forgeage de base de données (dbforge), vous spécifiez les types des champs directement dans le code. Par exemple, lors de la création d'une table avec dbforge, vous pouvez définir les types des champs comme suit :

$fields = [
    'id' => [
        'type' => 'INT',
        'constraint' => 11,
        'unsigned' => TRUE,
        'auto_increment' => TRUE,
    ],
    'title' => [
        'type' => 'VARCHAR',
        'constraint' => '100',
    ],
    'content' => [
        'type' => 'TEXT',
    ]
];

$this->dbforge->add_field($fields);
$this->dbforge->add_key('id', TRUE);
$this->dbforge->create_table('mytable');

Dans cet exemple, les types des champs (INT, VARCHAR, TEXT) sont définis directement dans le tableau $fields.

2. Validation des Données

CodeIgniter permet également de définir des "types" de champs d'une certaine manière via les règles de validation dans les formulaires. Bien que cela ne définisse pas le type de données dans la base de données, cela spécifie le type de données attendu et comment les données doivent être traitées ou validées avant d'être insérées ou mises à jour dans la base de données. Par exemple :

$this->form_validation->set_rules('username', 'Username', 'required|alpha_numeric');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');

Ici, bien que alpha_numeric et valid_email ne soient pas des types de données au sens traditionnel, ils définissent le format des données attendues pour ces champs.

3. Modèles

Dans CodeIgniter 4, vous pouvez également spécifier des règles de validation directement dans les modèles, ce qui inclut des règles qui impliquent des types de données, comme des chaînes de caractères, des nombres, etc. :

protected $validationRules = [
    'email' => 'required|valid_email',
    'age' => 'required|integer'
];

Conclusion

Les "types" de champs dans CodeIgniter sont principalement définis lors de la création ou modification de schémas de base de données et lors de la validation des données entrantes. Pour la base de données, les types sont spécifiés explicitement en fonction du système de gestion de base de données utilisé. Pour la validation des données, les "types" sont déterminés par les règles de validation qui assurent que les données entrantes sont du format attendu avant de procéder à leur traitement ou stockage.

 

Créer des fichiers de migration pour les tables devis, devis_items, et items

Pour créer des fichiers de migration pour les tables devis, devis_items, et items dans un projet CodeIgniter 4, suivez ces étapes. Notez que dans CodeIgniter 4, les migrations sont généralement placées dans le dossier app/Database/Migrations.

Étape 1: Préparation

Assurez-vous que le système de migration est configuré correctement dans votre fichier app/Config/Migrations.php.

Étape 2: Création des Fichiers de Migration

Vous devez créer un fichier de migration distinct pour chaque table. Voici un exemple de structure pour chaque fichier :

Migration pour devis

Créez un fichier nommé YYYYMMDDHHIISS_CreateDevis.php dans app/Database/Migrations, en remplaçant YYYYMMDDHHIISS par la date et l'heure actuelles pour versionner correctement votre migration.

<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class CreateDevis extends Migration
{
    public function up()
    {
        $this->forge->addField([
            'id' => [
                'type' => 'INT',
                'constraint' => 11,
                'unsigned' => true,
                'auto_increment' => true,
            ],
            'client_name' => [
                'type' => 'VARCHAR',
                'constraint' => '255',
            ],
            'date_created' => [
                'type' => 'DATETIME',
            ],
        ]);
        $this->forge->addKey('id', true);
        $this->forge->createTable('devis');
    }

    public function down()
    {
        $this->forge->dropTable('devis');
    }
}

Migration pour devis_items

Créez un fichier nommé YYYYMMDDHHIISS_CreateDevisItems.php.

<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class CreateDevisItems extends Migration
{
    public function up()
    {
        $this->forge->addField([
            'id' => [
                'type' => 'INT',
                'constraint' => 11,
                'unsigned' => true,
                'auto_increment' => true,
            ],
            'devis_id' => [
                'type' => 'INT',
                'constraint' => 11,
                'unsigned' => true,
            ],
            'item_id' => [
                'type' => 'INT',
                'constraint' => 11,
                'unsigned' => true,
            ],
            'quantity' => [
                'type' => 'INT',
                'constraint' => 11,
            ],
        ]);
        $this->forge->addKey('id', true);
        $this->forge->addForeignKey('devis_id', 'devis', 'id', 'CASCADE', 'CASCADE');
        $this->forge->addForeignKey('item_id', 'items', 'id', 'CASCADE', 'CASCADE');
        $this->forge->createTable('devis_items');
    }

    public function down()
    {
        $this->forge->dropTable('devis_items');
    }
}

Migration pour items

Créez un fichier nommé YYYYMMDDHHIISS_CreateItems.php.

<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class CreateItems extends Migration
{
    public function up()
    {
        $this->forge->addField([
            'id' => [
                'type' => 'INT',
                'constraint' => 11,
                'unsigned' => true,
                'auto_increment' => true,
            ],
            'description' => [
                'type' => 'TEXT',
            ],
            'price' => [
                'type' => 'DECIMAL',
                'constraint' => '10,2',
            ],
        ]);
        $this->forge->addKey('id', true);
        $this->forge->createTable('items');
    }

    public function down()
    {
        $this->forge->dropTable('items');
    }
}

Étape 3: Exécution des Migrations

Pour exécuter ces migrations, utilisez la commande CLI de CodeIgniter 4 :

php spark migrate

Cette commande appliquera toutes les migrations non exécutées dans l'ordre basé sur leur timestamp. Assurez-vous que votre configuration de base de données est correcte avant d'exécuter les migrations.

Ces fichiers de migration créeront les tables devis, devis_items, et items dans votre base de données, structurant ainsi la base de votre application.

 

Modifié le: lundi 5 février 2024, 09:13