Eagle Framework Help

Construction de requêtes customisées

MysqlQueryBuilder

L'utilitaire principale, le constructeur de requête EagleCore\Database\Default\QueryBuilder\MysqlQueryBuilder

<?php use EagleCore\Database\Default\QueryBuilder\MysqlQueryBuilder; MysqlQueryBuilder::createFrom(modelClass: YourModel::class);
  • reset remet à 0 les éléments internes du constructeur

  • prepareRequest prépare la requête dans l'instance de PDO fournie

  • as défini l'alias dans la requête

  • getRealSql fourni le SQL interne sans modification

  • getSql fourni le SQL généré

  • getBaseModel fourni le model lié au constructeur

  • getBindValues fourni une liste de class gestionnaires de bind

  • joinBuilder permet de joindre le constructeur fourni au constructeur actuel (utilisé pour l'imbrication de requête)

  • staticRequest permet d'écrire manuellement une requête SQL

Select

Cet exemple montre uniquement les possibilités

$builder->select("username",MysqlFunction::COUNT(numberGetter: "`{price}`"));

Insert

Les données à insérer peuvent être sous la forme : brute, MysqlFunction ou MysqlQueryBuilder

Cet exemple montre uniquement les possibilités

$builder->insert(insertConfig: [ "username" => "yahvya", "github" => "https://github.com/yahvya", "fullname" => MysqlFunction::UPPER("{username}"), "queryResult" => MysqlQueryBuilder::createFrom(modelClass: YourModel::class) ->select() ->limit(count: 1) ]);

Update

Les données à mettre à jour peuvent être sous la forme : brute, MysqlFunction ou MysqlQueryBuilder

Cet exemple montre uniquement les possibilités

$builder->update(insertConfig: [ "username" => "yahvya", "github" => "https://github.com/yahvya", "fullname" => MysqlFunction::UPPER("{username}"), "queryResult" => MysqlQueryBuilder::createFrom(modelClass: YourModel::class) ->select() ->limit(count: 1) ]);

Delete

$builder->delete();

Where

$builder->select()->where(); # équivaux à SELECT * from ... WHERE

Cond

Cet exemple montre uniquement les possibilités

$builder ->select() ->where() ->cond( new MysqlCondition(condGetter: "username",comparator: MysqlComparator::EQUAL(),conditionValue: "yahvya"), MysqlCondSeparator::AND(), new MysqlCondition(condGetter: "email",comparator: MysqlComparator::EQUAL(),conditionValue: "eagle.framework@github.com"), );

Having

Order By

$builder ->select() ->orderBy(["price","ASC"],["id","DESC"]);

Group By

Cet exemple montre uniquement les possibilités

$builder ->select(MysqlFunction::COUNT(numberGetter: "{price}")) ->groupBy("price","id");

Limit

$builder ->select() ->limit(count: 1); $builder ->select() ->limit(count: 15,offset: 30);

MysqlComparator

Focus sur la méthode spéciale REQUEST_COMPARATOR

Elle prend en paramètre une chaine comparator spéciale, car permettant de choisir l'emplacement de la requête.

Pour une requête du style SELECT * FROM table_1 where id = IN(SELECT id from table_2 LIMIT 4)

$tableOneBuilder = MysqlQueryBuilder::createFrom(modelClass: TableOneModel::class); $tableTwoBuilder = MysqlQueryBuilder::createFrom(modelClass: TableTwoModel::class); $tableTwoBuilder ->select("id") ->limit(count: 4); $tableOneBuilder ->select(); ->where() ->cond(new MysqlCondition( condGetter: "id", comparator: MysqlComparator::REQUEST_COMPARATOR(comparator: "IN({request})",queryBuilder: $tableTwoBuilder), conditionValue: $tableTwoBuilder ));

MysqlCondition

MysqlCondSeparator

$builder ->select() ->where() ->cond( MysqlCondSeparator::GROUP_START(), new MysqlCondition(...), new MysqlCondSeparator::AND(), new MysqlCondition(...), MysqlCondSeparator::GROUP_END() new MysqlCondSeparator::OR(), new MysqlCondition(...) );
12 août 2025