Les Modèles dans CodeIgniter

Dans CodeIgniter, les modèles sont utilisés pour gérer toutes les interactions avec la base de données. Ils représentent la couche "M" (Modèle) dans l'architecture MVC (Modèle-Vue-Contrôleur). Les modèles offrent une interface simplifiée pour l'exécution des requêtes de base de données, la manipulation des enregistrements, et la gestion des relations entre les données.

Exemple de Modèle : ItemModel

Le ItemModel est un exemple de modèle simple dans CodeIgniter. Il est utilisé pour interagir avec la table items dans la base de données.

 

<?php namespace App\Models;

use CodeIgniter\Model;

class ItemModel extends Model
{
    protected $table = 'items';
    protected $primaryKey = 'id';
    protected $allowedFields = ['description', 'price'];

    // Ajoutez des méthodes supplémentaires si nécessaire
}
  • protected $table : Spécifie le nom de la table dans la base de données.
  • protected $primaryKey : Définit la clé primaire de la table.
  • protected $allowedFields : Indique les champs qui peuvent être assignés en masse, utile pour les opérations save() et update().

Exemple de Modèle : DevisModel

Le DevisModel gère les interactions avec la table devis. Il peut également contenir des méthodes personnalisées pour des requêtes spécifiques.

<?php
namespace App\Models;

use CodeIgniter\Model;

class DevisModel extends Model
{
    protected $table = 'devis';
    protected $primaryKey = 'id';
    protected $allowedFields = ['client_name', 'date_created'];

    public function getDevisItemsWithDetails($devisId)
    {
        // Exemple de jointure (ajustez selon votre structure de base de données)
        return $this->db->table('devis_items')
            ->join('items', 'items.id = devis_items.item_id')
            ->where('devis_items.devis_id', $devisId)
            ->select('items.description, devis_items.quantity, items.price')
            ->get()
            ->getResultArray();
    }
}

 

La méthode getDevisItemsWithDetails est un exemple de fonction personnalisée pour récupérer des données spécifiques liées à un devis.

Exemple de Modèle : DevisItemModel

Le DevisItemModel est utilisé pour gérer les relations entre les devis et les items.

<?php namespace App\Models;

use CodeIgniter\Model;

class DevisItemModel extends Model
{
    protected $table = 'devis_items'; // Nom de la table dans la base de données
    protected $primaryKey = 'id'; // Clé primaire de la table

    protected $allowedFields = ['devis_id', 'item_id', 'quantity', 'custom_price']; // Champs autorisés pour l'insertion et la mise à jour

    // Si vous avez des dates dans votre table, vous pouvez les gérer automatiquement :
    protected $useTimestamps = false;
    protected $createdField  = ''; // Champ pour la date de création
    protected $updatedField  = ''; // Champ pour la date de mise à jour

    // Autres propriétés et méthodes selon vos besoins...
}

 

Ce modèle peut être utilisé pour ajouter, mettre à jour ou supprimer des items associés à un devis spécifique.

Utilisation des Modèles dans les Contrôleurs

Les modèles sont généralement utilisés dans les contrôleurs pour effectuer des opérations de base de données. Par exemple :

public function create()
{
    $itemModel = new ItemModel();
    $newItem = [
        'description' => 'Nouvel Item',
        'price' => 100.00
    ];
    $itemModel->save($newItem);
}

Dans cet exemple, le contrôleur utilise ItemModel pour créer un nouvel item dans la base de données.

Avantages des Modèles dans CodeIgniter

  • Séparation des préoccupations : Les modèles permettent de séparer la logique de base de données de la logique de l'application.
  • Réutilisabilité : Les modèles peuvent être réutilisés dans différents contrôleurs.
  • Sécurité : CodeIgniter protège contre les injections SQL et d'autres vulnérabilités de sécurité.
  • Facilité de maintenance : Les modèles centralisent la gestion des données, rendant l'application plus facile à maintenir.

Conclusion

Les modèles dans CodeIgniter sont un outil puissant pour gérer les interactions avec la base de données. Ils offrent une interface claire et sécurisée pour effectuer des opérations CRUD (Create, Read, Update, Delete) et peuvent être étendus avec des méthodes personnalisées pour des requêtes spécifiques. En utilisant des modèles, vous pouvez rendre votre code plus propre, plus sûr et plus facile à maintenir.

 
 
 
Modifié le: vendredi 26 janvier 2024, 10:17