logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll
18/06/2025, by Ivan

Da biste dodali WHERE uslov u dinamički upit, koristite metod condition():

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

Gornji kod će uputiti upit da filtrira rezultate na skup članaka. Obratite pažnju da ime polja ovde mora biti alias koji je kreiran metodama addField() ili addExpression().

Parametri Condition

Metod condition() prima tri parametra:

  • $field - polje za poređenje (obavezno).
  • $value - vrednost za poređenje (opciono, podrazumevano NULL).
  • $operator - operator poređenja (opciono, podrazumevano ‘=’)

Podržani operatori

Opšti operatori poređenja '=', '<>', '<', '<=', '>', '>=' su podržani u svim podržanim tipovima baza podataka.

Korišćenje IN, NOT IN

Operatori IN i NOT IN primaju niz u $value i porede vrednost polja sa vrednostima iz niza.

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

U ovom primeru, upit će vratiti zapise kod kojih je uid jednak 2, 5, 17 ili 22.

Korišćenje BETWEEN i NOT BETWEEN

Operatori BETWEEN i NOT BETWEEN primaju niz od dve vrednosti za poređenje.

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

Ovaj primer vraća zapise gde je vrednost u opsegu od 5 do 10.

Korišćenje IS NULL, IS NOT NULL, EXISTS i NOT EXISTS

Preporučljivo je koristiti sledeće metode umesto condition():

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

Iako uslov kao što je $query->condition($field, NULL, 'IS NOT NULL'); može raditi, gore navedena konvencija je preporučena.

Ostali operatori

Drugi operatori, poput BINARY ili specifični za određeni sistem baze podataka, mogu ili ne moraju raditi. Vodite računa o tome pri razvoju modula koji mogu raditi na različitim sistemima.

Korišćenje više uslova (Conditions)

Mogu se dodati više poziva condition() za dodatno filtriranje upita.

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

Ako postoji više uslova kao u primeru iznad, svi uslovi moraju biti ispunjeni da bi zapis bio u rezultatu (uslovi se povezuju sa AND).

Napomena: Da biste imali upit sa uslovima povezanima samo sa OR, koristite jednu orConditionGroup.

Grupe uslova (Conditions)

Grupe uslova se mogu koristiti za kreiranje složenijih WHERE izraza (uključujući OR) u upitu. Postoje dve vrste grupa uslova:

  • orConditionGroup - vraća objekat uslova povezanih sa OR
  • andConditionGroup - vraća objekat uslova povezanih sa AND

Grupe uslova vraćaju objekat koji se zatim može dodati kao uslov u upit.

// Kreiranje orConditionGroup
$orGroup = $query->orConditionGroup()
  ->condition('promoted', 1)
  ->condition('uid', [2,4,7,22], 'IN');
  
// Dodavanje grupe u upit.
$query->condition($orGroup);

U ovom primeru uslovi za promoted i uid se dodaju u WHERE deo upita, grupisani zajedno sa OR. To će rezultirati WHERE uslovom koji izgleda ovako:

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

Po potrebi možete dodati više orConditionGroup i andConditionGroup grupa. Grupe uslova mogu biti i ugnježdene za složenije WHERE uslove.

Evo primera složenog WHERE uslova:

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

Ovi uslovi u upitu mogu se napisati sa grupama uslova kao:

$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);

 

Source URL:
Source authors:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.