logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement
05/07/2025, by Ivan

Ajouter un champ

Pour ajouter un champ à une requête Select, utilisez la méthode addField() :

$title_field = $query->addField('n', 'title', 'my_title');

Le code ci-dessus indique à la requête de sélectionner le champ « title » de la table avec l’alias « n » et de lui assigner l’alias « my_title ». Si l’alias n’est pas spécifié, il sera généré automatiquement. Dans la grande majorité des cas, l’alias généré sera simplement le nom du champ. Dans cet exemple, ce sera « title ». Si cet alias existe déjà, l’alias sera le nom de la table et du champ. Dans cet exemple, ce sera « n_title ». Si cet alias existe aussi, un compteur sera ajouté à l’alias jusqu’à trouver un alias non utilisé, par exemple « n_title_2 ».

Notez que si vous créez et exécutez la requête vous-même sans spécifier d’alias, et que l’alias par défaut n’est pas disponible, il y a presque certainement une erreur dans votre code. Cependant, si vous écrivez une implémentation de hook_query_alter(), vous ne pouvez pas savoir précisément quels alias sont déjà utilisés, donc vous devez toujours utiliser l’alias généré.

Ajouter plusieurs champs

Pour sélectionner plusieurs champs, appelez addField() plusieurs fois dans l’ordre souhaité. Notez que dans la plupart des cas, l’ordre des champs ne devrait pas importer, et s’il importe, cela indique probablement un problème dans la logique métier du module.

Alternativement, vous pouvez utiliser la méthode fields() pour ajouter plusieurs champs en une seule fois.

$query->fields('n', ['nid', 'title', 'created', 'uid']);

La méthode ci-dessus est équivalente à appeler addField() quatre fois, une fois pour chaque champ. Cependant, fields() ne supporte pas la spécification d’un alias pour un champ. Elle retourne également l’objet requête lui-même, ce qui permet d’enchaîner les appels plutôt que de retourner les alias générés. Si vous avez besoin de connaître l’alias généré, utilisez addField() ou getFields() pour accéder à la structure interne brute des champs.

Appeler fields() sans liste de champs entraînera une requête « SELECT * ».

$query->fields('n');

Cela inclura « n.* » dans la liste des champs de la requête. Notez que les alias ne seront pas créés. Si la table avec SELECT * contient un champ qui est aussi explicitement sélectionné depuis une autre table, il peut y avoir une collision de noms dans le jeu de résultats. Dans ce cas, le jeu de résultats ne contiendra qu’un seul des champs ayant ce nom commun. Pour cette raison, l’utilisation de SELECT * n’est pas recommandée.

Retourner un seul champ avec fetchField

Utilisez la méthode fetchField pour retourner un seul champ d’une requête, par exemple comme suit (exemple un peu simple) :

$query = $connection->select('node', 'n');
$query->condition('n.nid', 123);
$query->addField('n', 'title');
$result = $query->execute();
return $result->fetchField();