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

Pour ajouter une clause WHERE à une requête dynamique, utilisez la méthode condition() :

$query->condition('bundle', 'article', '=');

Le code ci-dessus indique à la requête de filtrer les résultats pour le type de contenu « article ». Notez que le nom du champ ici doit être un alias créé par les méthodes addField() ou addExpression().

Paramètres de Condition

La méthode condition() prend trois paramètres :

  • $field – le champ à comparer (obligatoire).
  • $value – la valeur à comparer (optionnel, par défaut NULL).
  • $operator – l’opérateur de comparaison (optionnel, par défaut ‘=’).

Opérateurs pris en charge

Les opérateurs de comparaison généraux '=', '<>', '<', '<=', '>', '>=' sont pris en charge par tous les types de bases de données supportés.

Utilisation de IN, NOT IN

Les opérateurs IN et NOT IN acceptent un tableau dans $value et comparent la valeur du champ aux valeurs du tableau.

$users = [2,5,17,22];
$query->condition('uid', $users, 'IN');

Dans cet exemple, la requête retournera les enregistrements dont uid est égal à 2, 5, 17 ou 22.

Utilisation de BETWEEN et NOT BETWEEN

Les opérateurs BETWEEN et NOT BETWEEN acceptent un tableau de deux valeurs pour la comparaison.

$query->condition('count', [5,10], 'BETWEEN');

Dans cet exemple, la requête retournera les enregistrements avec une valeur entre 5 et 10 inclus.

Utilisation de IS NULL, IS NOT NULL, EXISTS, et NOT EXISTS

Par convention, utilisez les méthodes suivantes au lieu d’utiliser condition() :

$query->isNull($field);
$query->isNotNull($field);
$query->exists($field);
$query->notExists($field);

Bien qu’une condition comme $query->condition($field, NULL, 'IS NOT NULL') puisse fonctionner, la convention ci-dessus est recommandée.

Autres opérateurs

D’autres opérateurs, tels que BINARY ou d’autres spécifiques au système de base de données utilisé, peuvent fonctionner ou non. Gardez cela en tête lors du développement de modules destinés à être utilisés sur plusieurs systèmes.

Utilisation de plusieurs conditions

Vous pouvez ajouter plusieurs appels à condition() pour filtrer davantage la requête.

$query->condition('bundle', 'article', '=');
$query->condition('status', 1, '=');

Si plusieurs conditions sont présentes, comme dans l’exemple ci-dessus, toutes les conditions doivent être remplies pour qu’un enregistrement apparaisse dans le résultat (c’est-à-dire que les conditions sont combinées avec AND).

Astuce : Pour obtenir une requête avec uniquement des conditions OR, utilisez une orConditionGroup.

Groupes de conditions

Les groupes de conditions permettent de créer des expressions WHERE plus complexes (incluant OR) dans une clause de requête. Il existe deux types de groupes :

  • orConditionGroup – retourne un objet conditions combinées avec OR
  • andConditionGroup – retourne un objet conditions combinées avec AND

Les groupes de conditions retournent un objet que vous pouvez ensuite ajouter comme condition à la requête.

// Création du groupe orConditionGroup
$orGroup = $query->orConditionGroup()
  ->condition('promoted', 1)
  ->condition('uid', [2,4,7,22], 'IN');
  
// Ajout du groupe à la requête.
$query->condition($orGroup);

Dans cet exemple, les conditions pour promoted et uid sont ajoutées dans la clause WHERE, regroupées avec un OR. Cela donnera une clause WHERE ressemblant à :

WHERE (promoted = 1 OR uid IN (2,4,7,22))

Vous pouvez ajouter plusieurs groupes orConditionGroup et andConditionGroup si nécessaire. Les groupes de conditions peuvent être imbriqués pour répondre à des besoins plus complexes dans la clause WHERE.

Voici un exemple de clause WHERE :

WHERE (a = 1 OR b = 1) AND ((c = 1 AND d = 1) OR (e = 1))

Les conditions de la requête peuvent être écrites avec des groupes de conditions comme suit :

$orGroup1 = $query->orConditionGroup()
  ->condition('a', 1)
  ->condition('b', 1);
  
$andGroup1 = $query->andConditionGroup()
  ->condition('c', 1)
  ->condition('d', 1);
  
$orGroup2 = $query->orConditionGroup()
  ->condition($andGroup1)
  ->condition('e', 1);
  
$query->condition($orGroup1);
$query->condition($orGroup2);