Polja
Dodavanje polja
Da biste dodali polje u Select upit, koristite metod addField():
$title_field = $query->addField('n', 'title', 'my_title');
Gornji kod će uputiti upit da izabere polje „title“ iz tabele sa aliasom „n“ i dodeli mu alias „my_title“. Ako alias nije naveden, on će biti automatski kreiran. U velikoj većini slučajeva generisani alias biće jednostavno ime polja. U ovom primeru to će biti „title“. Ako taj alias već postoji, alias će biti ime tabele i ime polja. U ovom primeru to će biti „n_title“. Ako i taj alias već postoji, biće dodat brojač dok se ne pronađe slobodan alias, npr. „n_title_2“.
Obratite pažnju da ako pravite i popunjavate upit sami i ne navedete alias, a podrazumevani alias nije dostupan, gotovo sigurno imate grešku u kodu. Međutim, ako pišete implementaciju hook_query_alter(), ne možete sa sigurnošću znati koji aliasi su već zauzeti, zato uvek treba koristiti generisani alias.
Dodavanje više polja
Da biste izabrali više polja, pozovite addField() više puta redosledom koji želite. Obratite pažnju da u većini slučajeva redosled polja ne bi trebalo da bude bitan, a ako jeste, verovatno postoji greška u poslovnoj logici modula.
Alternativno, možete koristiti metod fields() da dodate više polja odjednom.
$query->fields('n', ['nid', 'title', 'created', 'uid']);
Ovaj metod je ekvivalentan pozivanju addField() četiri puta, po jednom za svako polje. Međutim, fields() ne podržava navodjenje aliasa za polje. Takođe vraća sam objekat upita, pa se može lančano pozivati, ali ne vraća nikakve generisane alias-e. Ako vam je potreban generisani alias, koristite addField() ili getFields() da pristupite sirovoj strukturi unutrašnjih polja.
Pozivanje fields() bez liste polja rezultira upitom „SELECT *“.
$query->fields('n');
Ovo će uključiti „n.*“ u listu polja upita. Obratite pažnju da alias-i neće biti kreirani. Ako tabela koja koristi SELECT * sadrži polje koje se takođe eksplicitno koristi iz druge tabele, može doći do konflikta imena polja u rezultujućem skupu. U tom slučaju, u skupu rezultata će biti samo jedno od polja sa istim imenom. Iz tog razloga, korišćenje SELECT * se ne preporučuje.
Vraćanje samo jednog polja korišćenjem fetchField
Koristite metod fetchField da vratite samo jedno polje iz upita, na primer sledeće (malo jednostavan primer):
$query = $connection->select('node', 'n'); $query->condition('n.nid', 123); $query->addField('n', 'title'); $result = $query->execute(); return $result->fetchField();
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.