Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 3 - Ստատիկ հարցումներ (SELECT)
Drupal-ում հարցման ամենընդհանուր ձևը ստատիկ հարցումն է։ Ստատիկ հարցումը բառացիորեն փոխանցվում է տվյալների բազային։ Միայն ընտրության հարցումը (select) կարող է լինել ստատիկ։
Ստատիկ հարցումներ պետք է օգտագործել միայն շատ պարզ դեպքերում։ Եթե անհրաժեշտ է գրավել բարդ հարցում, դինամիկ ստեղծվող կամ փոփոխվող հարցում՝ օգտագործեք դինամիկ հարցումներ։
Պարզ ճանապարհ ստատիկ հարցում կատարելու՝ մեթոդի միջոցով՝
<?php $result = $conn->query("SELECT nid, title FROM {node}"); ?>
Նախընտրելի է օգտագործել գործընթացային փաթեթավորիչը՝
Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 4 - Դինամիկ հարցումներ (SELECT)
Հավանաբար մենք մոտեցել ենք Drupal-ի Database API-ի ամենահետաքրքիր հատվածին՝ դինամիկ հարցումներին: Դրանք անվանվում են դինամիկ, քանի որ Drupal-ը դինամիկ կերպով ավելացնում է հարցման տեքստը: Բոլոր ներմուծման, թարմացման, ջնջման կամ միավորման հարցումները կարող են լինել դինամիկ: Ընտրության հարցումները կարող են լինել թե՛ դինամիկ, թե՛ ստատիկ: Այնուամենայնիվ, խորհուրդ է տրվում օգտագործել դինամիկ հարցումներ՝ նույնիսկ ընտրության համար:
Ինչից է բաղկացած Drupal 7 մոդուլը։
Նախքան սկսել մեր մոդուլի ստեղծումը, ես դեռ մի քիչ կպատմեմ Drupal API-ի հնարավորությունների մասին։ API-ն տալիս է լայն հնարավորություններ՝ աշխատելու Տաքսոնոմիայի, նոդերի, օգտագործողների, ԲԴ մուտքագրման և արտածման հետ։ Դրուպալում գոյություն ունի հուկերի համակարգ, որը նախատեսված է մոդուլների և միջուկի, ինչպես նաև մոդուլների միջև փոխկապակցության համար։ Հուկը հետադարձ կանչվող ֆունկցիա է (callback), այսինքն՝ երբ կոդի կատարումը հասնում է հուկին, կատարվում է մեր ֆունկցիայի կցում՝ որը մենք գրում ենք մեր մոդուլում։ Այդպես մենք կարող ենք մշակել օգտատիրոջ տվյալները, մենյուները, տաքսոնոմ
Drupal-ում մոդուլի ստեղծում, արագ մեկնարկ
Սկսենք api.drupal.org կայքից, բացեք hook_node_presave() հուկի էջը, որը գործարկվում է նախքան նոդի ավելացումը։
http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7
Հուքերը թույլ են տալիս մեզ ներդնել մեր կոդը Դրուպալի ընթացիկ գործընթացների մեջ, ավելացնել ստուգումներ, տվյալների դաշտեր, ձևերի տարրեր և այլն։
Ավելացնենք մեր մոդուլը sites/all/modules
թղթապանակում՝ հետևյալ կառուցվածքով․
Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 12 - Հարցման պայմաններ (WHERE, HAVING, LIKE)
Հարցման պայմանները թույլ են տալիս ընտրել միայն այն գրառումները, որոնք համապատասխանում են որոշակի սահմանափակումներին, օրինակ՝ երկու շաբաթից ավելի վաղ չստեղծված նոդերը, կամ տերմինները, որոնցում կա "դրուպալ" բառը։ SQL-ում մենք օգտագործում ենք WHERE և HAVING՝ սահմանափակումներ կիրառելու համար SELECT, UPDATE, DELETE հարցումների վրա։ Դինամիկ հարցումներում ևս իրականացված է պայմանների հետ աշխատելու մեխանիզմ։ Այս մեխանիզմը նույն կերպ է աշխատում բոլոր երեք տեսակի հարցումների համար՝ SELECT, UPDATE, DELETE։
Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 11 - MERGE հարցումներ
Միավորող հարցումները հատուկ հիբրիդ տեսակի հարցումներ են։ Չնայած SQL 2003-ում սահմանվել է այս հարցումների շարահյուսությունը, իրականում չկան տվյալների բազաներ, որոնք աջակցում են այդ շարահյուսությանը։ Այնուամենայնիվ, տվյալների բազաների մեծ մասը տրամադրում է այս ֆունկցիոնալության այլընտրանքային իրականացում՝ օգտագործելով յուրահատուկ շարահյուսություն։ Drupal-ում միավորող հարցման կոնստրուկտորը աբստրակցիա է իրականացնում այս գաղափարի շուրջ՝ կառուցելով այնպիսի օբյեկտ, որը հնարավոր կլինի կոմպիլացնել ըստ կոնկրետ բազայի առանձնահատկությունների։
Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 10 - Ջնջել հարցումները (DELETE)
Ջնջման հարցումները պետք է օգտագործեն հարցման կոնստրուկտոր։ Դրանք սկսվում են db_delete()
ֆունկցիայով՝
Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 9 - Թարմացման հարցումներ
Թարմացման հարցումները միշտ պետք է օգտագործեն հարցման կոնստրուկտոր։ Տարբեր տվյալների բազաներ ունեն հատուկ մշակման մեթոդներ LOB (Large OBject, օրինակ՝ TEXT MySQL-ում) և BLOB (Binary Large OBject) դաշտերի համար, ուստի աբստրակցիայի մակարդակ անհրաժեշտ է, որպեսզի յուրաքանչյուր տվյալների բազայի վարորդ կարողանա ապահովել համապատասխան ֆունկցիոնալություն։
Թարմացման հարցումները պետք է սկսվեն db_update()
ֆունկցիայից՝
Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 8 - Հարցումների ներմուծում (INSERT INTO)
Տեղադրման հարցումները միշտ պետք է իրականացվեն հարցումների կոնստրուկտորի միջոցով։ Որոշ տվյալների բազաներ պահանջում են հատուկ մշակման եղանակներ LOB (Large Object, օրինակ՝ MySQL-ում տեքստ) և BLOB (Binary Large Object) դաշտերի համար, այդ պատճառով անհրաժեշտ է աբստրակցիայի մակարդակ, որպեսզի յուրաքանչյուր տվյալների բազայի (ԴԲ) վարորդ կարողանա իրականացնել համապատասխան մշակման մեթոդները։
Տեղադրման հարցումը սկսվում է db_insert()
ֆունկցիայի օգտագործմամբ՝
Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 7 - Հարցման արդյունքների մշակում (fetch)
Ընտրության հարցումը միշտ վերադարձնում է հարցման մշակման արդյունքը՝ 0 կամ ավել գրառում։ Կան մի քանի եղանակներ արդյունքը մշակելու համար, որոնք կարող եք օգտագործել ըստ անհրաժեշտության։
Ամենահաճախ օգտագործվող մեթոդը foreach()
ցիկլն է՝ արդյունքների միջով անցնելու համար։