Blog
Rad sa bazom podataka u Drupal 7 - lekcija 3 - Statički upiti (SELECT)
Najčešći oblik upita u Drupalu je statički upit. Statički upit se doslovno prosleđuje bazi podataka. Samo SELECT upit može biti statički. Statičke upite treba koristiti samo u vrlo jednostavnim slučajevima. Trebalo bi da koristite dinamičke upite kada treba da napišete složen upit, dinamički kreiran ili izmenjen nakon izvršenja. Jednostavan način da izvršite statički upit je preko metode query objekta:
<?php $result = $conn->query("SELECT nid, title FROM {node}"); ?>
Proceduralni wrapper je poželjniji:
Rad sa bazom podataka u Drupal 7 - lekcija 4 - Dinamički upiti (SELECT)
Verovatno smo stigli do najzanimljivijeg dela Drupal Database API-ja: dinamički upiti. Dinamički upiti se tako zovu jer Drupal dinamički dodaje delove upita. Svi INSERT, UPDATE, DELETE ili MERGE upiti mogu biti dinamički. SELECT upiti mogu biti i dinamički i statički. Ipak, preporučuje se korišćenje dinamičkih upita i za SELECT upite.
Rad sa bazom podataka u Drupal 7 - lekcija 5 - Extenders (Proširenja)
Upiti za izbor podržavaju proširenja (extenders). Proširenje omogućava dodavanje funkcionalnosti na upit za izbor tokom izvršenja. Ova funkcionalnost može biti dodatna metoda ili obrada ponašanja postojeće metode.
Za ovo se koriste OOP obrasci (design patterns), proširenja su implementirana po Decorator obrascu. Ona dodaju dodatne odgovornosti dinamičkom objektu kroz fleksibilnu alternativu podklase za proširenje metode.
Rad sa bazom podataka u Drupal 7 - lekcija 6 - Izmena upita u letu (hook_query_alter)
Važna osobina dinamičkih SELECT upita je mogućnost da drugi moduli menjaju upite „u letu“. Ovo omogućava drugim modulima da ubacuju svoje instrukcije u upit, čime utiču na njegovo ponašanje ili primenjuju promene tokom izvršavanja upita, na primer za definisanje prava pristupa nodovima. Postoje tri komponente za izmene upita u letu: tagging (označavanje), meta podaci i hook_query_alter().
Rad sa bazom podataka u Drupal 7 - lekcija 7 - Obrada rezultata upita (fetch)
Upit za selekciju uvek vraća rezultat obrade upita kao 0 ili više zapisa. Postoji nekoliko načina da se obrade podaci iz rezultata upita, koje možete koristiti prema sopstvenoj proceni.
Najčešće se rezultati koriste u vidu petlje foreach().
Rad sa bazom podataka u Drupal 7 - lekcija 8 - INSERT INTO upiti (ubacivanje)
INSERT upiti uvek treba da koriste konstruktor upita. Neke baze podataka zahtevaju specijalne tretmane za LOB (Large OBject, poput TEXT u MySQL) i BLOB (Binary Large OBject) polja, pa je potreban nivo apstrakcije za pojedinačne drajvere baza da implementiraju ove tretmane.
INSERT upiti počinju korišćenjem funkcije db_insert():
Rad sa bazom podataka u Drupal 7 - lekcija 9 - UPDATE upiti (ažuriranje)
UPDATE upiti uvek treba da koriste konstruktor upita. Različite baze podataka imaju specifične tretmane za LOB (Large OBject, kao što je TEXT u MySQL) i BLOB polja (Binary Large OBject), pa je potreban nivo apstrakcije za pojedinačne drajvere da implementiraju specifične tretmane.
UPDATE upiti počinju funkcijom db_update():
Rad sa bazom podataka u Drupal 7 - lekcija 10 - DELETE upiti (brisanje)
DELETE upiti treba da koriste konstruktor upita. Počinju funkcijom db_delete():
<?php $query = db_delete('node', $options); ?>
Ovaj upit za brisanje će ukloniti zapise iz tabele node. Napomena: nije potrebno stavljati ime tabele u viticaste zagrade, konstruktor upita to radi automatski. DELETE upiti koriste Fluent API, što znači da svi metodi (osim execute()) vraćaju objekat upita na sebi (isto kao i kod update i insert upita).
Rad sa bazom podataka u Drupal 7 - lekcija 11 - Merge upiti (spajanje)
Merge upiti su specijalni hibridni tip upita. Iako je sintaksa za ove upite definisana u SQL 2003, zapravo ne postoji baza podataka koja podržava ovu sintaksu direktno. Međutim, većina baza nudi alternativne implementacije sa specifičnim sintaksama. Konstruktor merge upita u Drupalu apstrahuje koncept merge upita u obliku objekta, tako da se objekat može različito kompajlirati za svaku bazu, uzimajući u obzir njene specifičnosti.
Rad sa bazom podataka u Drupal 7 - lekcija 12 - Uslovi upita (WHERE, HAVING, LIKE)
Uslov upita omogućava da izaberemo samo one zapise koji zadovoljavaju određene kriterijume, na primer nodove kreirane ne starije od dve nedelje, termine koji sadrže reč „drupal“ i slično. U SQL-u koristimo WHERE i HAVING da postavimo ograničenja na SELECT, UPDATE, DELETE upite. U dinamičkim upitima je takođe implementiran mehanizam za rad sa uslovima upita. Ovaj mehanizam radi isto za sva tri tipa upita: selekciju, ažuriranje i brisanje.
Koncept uslovnih izraza
Uslov je sadržan u posebnom izrazu koji postavlja ograničenje.