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éesSpécifier le provider, une class qui extends de
EagleCore\Database\Default\Provider\DatabaseProvider(par défautMysqlProvider) 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
TableNameattribut associé à la class permettant de spécifier le nom de la table représentéeBinary|Bool|Char|Decimal|Enum|Int|Json|Text|TinyInt|VarBinary|Varcharavec comme suffixeColumn. Ces types permettent de mapper les différentes colonnes possibles sur un typeMysql. Référez-vous aux paramètres et commentaires de ces fonctionsuse EagleCore\Database\Default\Attributes\VarcharColumn; #[VarcharColumn(columnName: "user_name",maxLen: 255,)] protected string $username;TimestampColumnce 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 unINT. 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();JoinedColumnce type spécial permet de représenter une jointure entre deux tables. Un élément portant cet attribut doit être associé au typeEagleListdes 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
classModelreprésente la class de table associée - Le paramètrejoinConfigce 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ètreloadOnGenerationpermet 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.
RegexCondpermet d'associer une regex pour valider la donnée fournie.LenCondpermet d'associer une limitation en taille sur une donnée de typechaine.JsonValidityCondpermet de vérifier que la donnée est un tableau pour la conversion json.FilterCondpermet d'appliquer une vérificationfilter_varEnumValiditypermet de vérifier que la donnée est acceptée dans l'énumération liéDatetimeCondvérifie que la chaine fournie est uneDatetimecorrecte.CallableCondpermet 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.
JsonFormatterformate un tableau en chaine json pour le stockage en base de données.JsonReformerreformate une chaine json formatée en tableau.
Les types personnalisés
JoinedListlié àJoinedColumnTimestamplié àTimestampColumn
Les hooks
L'énumération EagleCore\Database\System\DatabaseActions liste les hooks implémentées par les systèmes.
[before|after]Createactions pre et post création[before|after]Updateactions pre et post mise à jour[before|after]Deleteactions pre et post suppression[before|after]Generationactions 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.
createenregistre le modelupdatemet à jour le model (basé sur les éléments déclarés comme clés primaires)deletesupprime le model (basé sur les éléments déclarés comme clés primaires)findOneméthode statique permettant de récupérer un seul élément matchant les conditionsfindAllméthode statique permettant de récupérer les éléments matchant les conditions
setAttributemet à jour la valeur d'un attribut en vérifiant en amont les conditions associées puis en appliquant les formateurs associésgetAttributerécupère la donnée d'un attribut en appliquant les reformers associésgetAttributeOriginalpermet de récupérer la valeur originale stockée sans reformergetColumnsConfigfourni la configuration récupérée des colonnes.getColumnConfigfourni la configuration d'une colonne particulière via le nom de l'attribut de class associégetJoinedColumnsConfigfourni la configuration des colonnes de jointuregetTableNameManagerfourni une instance de l'attributTableNamedu nom de la tablegetAsArrayenregistre les données de la class dans un tableau indicé par le nom d'attribut de classsetAttributesOriginalValuesmet à jour le tableau des valeurs originaleslastInsertIdfourni le dernier id inséré (peut être utile notamment pour l'affectation des clés primaires après insertion)createFromDatabaseLinegénère un model à partir d'une ligne de la base de données (via fetch)createFromDatabaseLinesgénère les models à partir des lignes de la base de données (via fetch)createFromDatabaseLinesgénère les models à partir des lignes de la base de données (via fetch)newInstanceOfModelgénère une nouvelle instance du model à partir de la class fournieexecQueryexécute une requête via le constructeur de requêteloadJoinedColumnscharge les colonnes jointescreateModelFromLinegénère un nouveau model à partir d'une ligne directe (sous forme de tableau) de la base de donnéesbuildPrimaryKeysCondOnajoute les conditions de clés primaires sur un constructeur de requêtegetDatabaseConfigfournie la configuration sous forme de classConfigde base de données définie dans l'environnement