Drupal 7 - Աշխատանք տվյալների բազայի հետ PHP PDO-ի միջոցով
Անցում կատարելով Drupal 7-ի վրա՝ մենք անցնում ենք նոր Drupal տվյալների բազայի աբստրակցիայի շերտի API-ի, որը կառուցված է PDO-ի հիման վրա։ PDO-ն վաղուց արդեն օգտագործվում է ինչպես Zend framework-ում, այնպես էլ բազմաթիվ այլ PHP ֆրեյմվորկներում։ Ամեն ինչ շատ հարմար էր Drupal 6-ում՝ SQL հարցումներ գրելու առումով, բայց ի՞նչու է մեզ պետք ինչ-որ նոր բան։
Եկեք նախ պարզենք՝ ի՞նչ է PDO-ն։
Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 1 - drupal db api
Եթե դուք գրել եք մոդուլներ Drupal-ի 6-րդ տարբերակի համար, ապա ձեզ համար դժվար չի լինի անցում կատարել դեպի Drupal 7-ի database API: Նոր DB API-ն աշխատում է PHP-ի PDO ընդլայնման հիման վրա, ինչը նրան հնարավորություն է տալիս աշխատել տարբեր տվյալների բազաների հետ, ինչպիսիք են MySQL, PostgreSQL, MSSQL և հնարավոր է նաև Oracle։ Պարզության մասին դժվար է խոսել, քանի որ պետք է սովորել նոր շարահյուսությանը, SQL հարցում գրելն ավելի սովորական է։
Ահա մի հատված պաշտոնական փաստաթղթերից՝
Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 2 - Տվյալների բազայի կարգավորում
ԲԴ-ի հետ կապի սահմանման հիմնական միջոցը $databases զանգվածն է, որը գտնվում է settings.php ֆայլում։ Ինչպես ցույց է տալիս անունը, $databases թույլ է տալիս սահմանել բազմաթիվ կապեր տվյալների բազաների հետ։ Այն նաև աջակցում է մի քանի նպատակների սահմանումը։ Կապը չի բացվում (կապի օբյեկտ չի ստեղծվում), մինչև առաջին անգամ որևէ կոդի հատված հարցում չկատարի տվյալների բազային։
Աշխատանք տվյալների բազայի հետ 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()
ֆունկցիայով՝