Eagle Framework Help

Base de données

Configuration de la base de données

La configuration de la base de données se base sur le fichier d'environnement configs/env.php au niveau de // configuration de la base de données.

  • Mettre le booléen d'initialisation à true, permet de spécifier à l'étape de routing de lancer la gestion de la base de données

  • Spécifier le provider, une class qui extends de EagleCore\Database\Default\Provider\DatabaseProvider (par défaut MysqlProvider) permet d'avoir une class pouvant se charger d'initialiser les outils requis.

  • Spécifier les données de connexion

Les models

Les models sont chargés par défaut dans le dossier Src/Models et extends de la class CustomModel servant d'intermédiaire avec le framework.

Cette class permet également de définir des méthodes personnalisées pour les models.

Les attributs de description

  • TableName attribut associé à la class permettant de spécifier le nom de la table représentée

  • Binary|Bool|Char|Decimal|Enum|Int|Json|Text|TinyInt|VarBinary|Varchar avec comme suffixe Column. Ces types permettent de mapper les différentes colonnes possibles sur un type Mysql. Référez-vous aux paramètres et commentaires de ces fonctions

    use EagleCore\Database\Default\Attributes\VarcharColumn; #[VarcharColumn(columnName: "user_name",maxLen: 255,)] protected string $username;
  • TimestampColumn ce type spécial du framework (bien qu'existant sur MYSQL) sert de passage pour toutes données de temps (datetime, time ...) via timestamp. Le type associé derrière est un INT. Un élément portant cet attribut doit utiliser le type customisé Timestamp.

    use EagleCore\Database\Default\Attributes\TimestampColumn; use EagleCore\Database\Default\CustomDatatypes\Timestamp; use Override; #[TimestampColumn(columnName: "joined_at")] protected Timestamp $joinedAt; #[Override] protected function beforeCreate(mixed $datas = []): self{ parent::beforeCreate(); $this->joinedAt = new Timestamp(); return $this; }

    ou

    use EagleCore\Database\Default\Attributes\TimestampColumn; use EagleCore\Database\Default\CustomDatatypes\Timestamp; #[TimestampColumn(columnName: "joined_at")] protected Timestamp $joinedAt = new Timestamp();
  • JoinedColumn ce type spécial permet de représenter une jointure entre deux tables. Un élément portant cet attribut doit être associé au type EagleList des utilitaires qui contiendra la liste des éléments associés.

    use EagleCore\Database\Default\Attributes\JoinedColumn; use EagleCore\Database\Default\CustomDatatypes\JoinedList; #[JoinedColumn( classModel: BannedUserModel::class, joinConfig: ["id" => "userId"] )] protected JoinedList $bannedUsers;

    - Le paramètre classModel représente la class de table associée - Le paramètre joinConfig ce tableau permet de définir les clés de jointures. Il est indicé par le nom des attributs de la class actuelle pointant sur le nom des attributs de la class liée. *Cette structure permet la liaison via de multiples attributs* - Le troisième paramètre loadOnGeneration permet de définir si les models liés doivent être chargés automatiquement à la génération du model. *Celà permet notamment d'éviter le chargement infini entre deux models.*

Les conditions d'affectation

Les conditions par défaut se situent dans le namespace EagleCore\Database\Default\Conditions.

  • RegexCond permet d'associer une regex pour valider la donnée fournie.

  • LenCond permet d'associer une limitation en taille sur une donnée de type chaine.

  • JsonValidityCond permet de vérifier que la donnée est un tableau pour la conversion json.

  • FilterCond permet d'appliquer une vérification filter_var

  • EnumValidity permet de vérifier que la donnée est acceptée dans l'énumération lié

  • DatetimeCond vérifie que la chaine fournie est une Datetime correcte.

  • CallableCond permet d'appeler une condition encapsulée dans une méthode statique

Les utilitaires de formatage de données

Les 'formater' par défaut se trouvent dans le namespace EagleCore\Database\Default\Formatters.

  • JsonFormatter formate un tableau en chaine json pour le stockage en base de données.

  • JsonReformer reformate une chaine json formatée en tableau.

Les types personnalisés

  • JoinedList lié à JoinedColumn

  • Timestamp lié à TimestampColumn

Les hooks

L'énumération EagleCore\Database\System\DatabaseActions liste les hooks implémentées par les systèmes.

  • [before|after]Create actions pre et post création

  • [before|after]Update actions pre et post mise à jour

  • [before|after]Delete actions pre et post suppression

  • [before|after]Generation actions pre et post génération du model. L'étape de génération consiste à l'affectation des valeurs de la base de données et autres actions de création du model.

Les méthodes par défaut

Cette liste ne contient pas toutes les méthodes définies, seulement les plus utiles.

  • create enregistre le model

  • update met à jour le model (basé sur les éléments déclarés comme clés primaires)

  • delete supprime le model (basé sur les éléments déclarés comme clés primaires)

  • findOne méthode statique permettant de récupérer un seul élément matchant les conditions

  • findAll méthode statique permettant de récupérer les éléments matchant les conditions

  • setAttribute met à jour la valeur d'un attribut en vérifiant en amont les conditions associées puis en appliquant les formateurs associés

  • getAttribute récupère la donnée d'un attribut en appliquant les reformers associés

  • getAttributeOriginal permet de récupérer la valeur originale stockée sans reformer

  • getColumnsConfig fourni la configuration récupérée des colonnes.

  • getColumnConfig fourni la configuration d'une colonne particulière via le nom de l'attribut de class associé

  • getJoinedColumnsConfig fourni la configuration des colonnes de jointure

  • getTableNameManager fourni une instance de l'attribut TableName du nom de la table

  • getAsArray enregistre les données de la class dans un tableau indicé par le nom d'attribut de class

  • setAttributesOriginalValues met à jour le tableau des valeurs originales

  • lastInsertId fourni le dernier id inséré (peut être utile notamment pour l'affectation des clés primaires après insertion)

  • createFromDatabaseLine génère un model à partir d'une ligne de la base de données (via fetch)

  • createFromDatabaseLines génère les models à partir des lignes de la base de données (via fetch)

  • createFromDatabaseLines génère les models à partir des lignes de la base de données (via fetch)

  • newInstanceOfModel génère une nouvelle instance du model à partir de la class fournie

  • execQuery exécute une requête via le constructeur de requête

  • loadJoinedColumns charge les colonnes jointes

  • createModelFromLine génère un nouveau model à partir d'une ligne directe (sous forme de tableau) de la base de données

  • buildPrimaryKeysCondOn ajoute les conditions de clés primaires sur un constructeur de requête

  • getDatabaseConfig fournie la configuration sous forme de class Config de base de données définie dans l'environnement

Générer le SQL de création d'un model

<?php use EagleCore\Database\Default\System\MysqlTableCreator; echo MysqlTableCreator::getTableCreationFrom(model: new YourModelInstance);
12 août 2025