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
TableName
attribut associé à la class permettant de spécifier le nom de la table représentéeBinary|Bool|Char|Decimal|Enum|Int|Json|Text|TinyInt|VarBinary|Varchar
avec 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;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 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();JoinedColumn
ce type spécial permet de représenter une jointure entre deux tables. Un élément portant cet attribut doit être associé au typeEagleList
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ètrejoinConfig
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ètreloadOnGeneration
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 typechaine
.JsonValidityCond
permet de vérifier que la donnée est un tableau pour la conversion json.FilterCond
permet d'appliquer une vérificationfilter_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 uneDatetime
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 modelupdate
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 conditionsfindAll
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ésgetAttribute
récupère la donnée d'un attribut en appliquant les reformers associésgetAttributeOriginal
permet de récupérer la valeur originale stockée sans reformergetColumnsConfig
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 jointuregetTableNameManager
fourni une instance de l'attributTableName
du nom de la tablegetAsArray
enregistre les données de la class dans un tableau indicé par le nom d'attribut de classsetAttributesOriginalValues
met à jour le tableau des valeurs originaleslastInsertId
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 fournieexecQuery
exécute une requête via le constructeur de requêteloadJoinedColumns
charge les colonnes jointescreateModelFromLine
génère un nouveau model à partir d'une ligne directe (sous forme de tableau) de la base de donnéesbuildPrimaryKeysCondOn
ajoute les conditions de clés primaires sur un constructeur de requêtegetDatabaseConfig
fournie la configuration sous forme de classConfig
de base de données définie dans l'environnement