Opšti pojmovi
Nivo baze podataka Drupala izgrađen je na vrhu PDO biblioteke za PHP. PDO pruža jedinstven objektno-orijentisan API za pristup različitim bazama podataka, ali ne pruža apstrakciju za različite SQL dijalekte koji se koriste u različitim bazama podataka.
Vozači (Driveri)
Pošto različite baze podataka zahtevaju različite načine interakcije, nivo baze podataka Drupala zahteva vozač za svaki tip baze podataka. Vozač se sastoji od serije fajlova smeštenih u include/database/driver, gde je driver niz koji predstavlja jedinstveni ključ za taj vozač. U većini slučajeva, ključ vozača je mala slova imena baze podataka, na primer „mysql“, „pgsql“ ili „mycustomdriver“.
Svaki vozač se sastoji od nekoliko klasa izvedenih iz roditeljskih klasa u osnovnom sistemu baza podataka. Ove klase specifične za vozača mogu da prepišu bilo koje ponašanje neophodno za pravilnu podršku tog tipa baze podataka. Specifične klase za vozača uvek su imenovane po njihovoj roditeljskoj klasi, nakon čega sledi donja crta i ime vozača. Na primer, verzija InsertQuery specifična za MySQL naziva se InsertQuery_mysql.
Veze
Veza je objekat klase DatabaseConnection, koji nasleđuje klasu PDO. Za svaku bazu podataka na koju se Drupal povezuje postoji jedan objekat veze. Ovaj objekat veze može biti podeljen u podklase za svaki pojedinačni vozač.
Da biste pristupili (i po potrebi otvorili) objekat veze, koristite:
$database = \Drupal::database(); // Ili $database = \Drupal::service('database');
Ako servisi nisu dostupni, \Drupal\Core\Database\Database::getConnection() može da dobije vezu sa bazom podataka.
Za dodatne informacije o cilju i ključu veze pogledajte stranicu dokumentacije o konfiguraciji baze.
Da biste pristupili trenutno aktivnoj vezi, koristite:
$conn = \Drupal\Core\Database\Database::getConnection() ;
Ovo će dobiti cilj po default-u za aktivnu vezu.
Napomena: u većini slučajeva ne morate direktno zahtevati objekat veze. Proceduralni omotači će to uraditi umesto vas. Jedini razlog zbog kojeg bi vam ikada bio potreban direktan pristup objektu veze je ako radite složene manipulacije sa više baza podataka i ne želite da menjate aktivnu bazu podataka.
Da biste podesili aktivnu vezu, koristite:
$conn = \Drupal\Core\Database\Database::setActiveConnection('external');
Pogledajte sledeći odeljak, Konfiguracija baze podataka, za detaljnije informacije o ključevima veze i ciljevima.
Upiti
Upit je SQL naredba koja će biti poslana vezi sa bazom podataka. Sistem baze podataka podržava šest tipova upita: statički, dinamički, ubacivanje, ažuriranje, brisanje i spajanje. Neki upiti se pišu kao SQL šabloni (pripremljene naredbe), dok drugi koriste objektno-orijentisane graditelje upita. „Objekat upita“ se odnosi na instancu graditelja upita za jedan od različitih tipova upita.
Izjave
Objekat izjave je rezultat SELECT upita. Uvek će biti tipa DatabaseStatement ili moguće njegova podklasa. DatabaseStatement nasleđuje PDOStatement klasu.
Drupal koristi pripremljene izjave za sve upite. Pripremljena izjava je šablon upita u koji će biti ubačene vrednosti za izvršenje. Zamislite pripremljenu izjavu kao ekvivalent SQL funkcije koja se zatim poziva sa parametrima za korišćenje.
U običnom PDO-u, morate eksplicitno pripremiti objekat izjave i zatim ga izvršiti sa određenim vrednostima vezanim za oznake u upitu. Zatim se izjava može ponoviti kao skup rezultata. Zapravo, izjava i skup rezultata su sinonimi, ali samo nakon što je izjava izvršena.
Drupal ne izlaže pripremljenu izjavu direktno. Umesto toga, programer modula koristi objekat upita ili jednokratni SQL string za izvršenje upita, a objekat izjave za taj upit se vraća. Dakle, termini „objekat izjave“ i „objekat skupa rezultata“ su manje-više sinonimi.
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.