Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 9 - Թարմացման հարցումներ

12/05/2025, by Ivan

Թարմացման հարցումները միշտ պետք է օգտագործեն հարցման կոնստրուկտոր։ Տարբեր տվյալների բազաներ ունեն հատուկ մշակման մեթոդներ LOB (Large OBject, օրինակ՝ TEXT MySQL-ում) և BLOB (Binary Large OBject) դաշտերի համար, ուստի աբստրակցիայի մակարդակ անհրաժեշտ է, որպեսզի յուրաքանչյուր տվյալների բազայի վարորդ կարողանա ապահովել համապատասխան ֆունկցիոնալություն։

Թարմացման հարցումները պետք է սկսվեն db_update() ֆունկցիայից՝

<?php
$query = db_update('node', $options);
?>

Սա ստեղծում է թարմացման հարցման օբյեկտ, որը կփոխի մեկ կամ մի քանի գրառում node աղյուսակում։ Ուշադրություն դարձրեք, որ չկան անհրաժեշտություն գրել աղյուսակի անունը կուրծքանշաններով, կոնստրուկտորը ինքն է դա մշակում։

Թարմացման հարցման օբյեկտը օգտագործում է fluent API, այսինքն՝ բոլոր մեթոդները (բացառությամբ execute()) վերադարձնում են իրենք իրենց, ինչը թույլ է տալիս մեթոդները գրել շղթայաբար։ Շատ դեպքերում, սա նշանակում է, որ հարցման արդյունքը հնարավոր չէ վերագրել փոփոխականին։

Թարմացման հարցումը բաղկացած է թարմացվող դաշտերի և WHERE պայմանների զույգից։ WHERE պայմանների կառուցվածքը մենք մանրամասն կքննարկենք հաջորդ դասերում, իսկ այստեղ միայն հակիրճ կներկայացնենք։

Ստորև ներկայացված է թարմացման հարցման տիպիկ օրինակ՝

<?php
/* Այս սարսափելի օրինակը ցույց է տալիս ինչպես թարմացնել node աղյուսակի գրառումները */
$num_updated = db_update('node')
  ->fields(array(
    'uid' => 5,
    'status' => 1,
  ))
  ->condition('created', REQUEST_TIME - 3600, '>=')
  ->execute();
?>

Այս օրինակը համարժեք է հետևյալ SQL հարցմանը՝

UPDATE {node} SET uid=5, status=1 WHERE created >= 1221717405;

Օրինակում ներկայացված է բոլոր այն node գրառումների թարմացումը, որոնք ստեղծվել են վերջին ժամվա ընթացքում՝ տալով uid=5 և status=1 արժեքներ։ fields() մեթոդը ընդունում է միայն ասոցիատիվ զանգված, որը ցույց է տալիս, թե որ դաշտերն ինչ արժեք պետք է ստանան։ Ի տարբերություն insert հարցման, այստեղ միայն ասոցիատիվ զանգվածներ են թույլատրվում։ Դաշտերի հերթականությունը կարևոր չէ։

execute() մեթոդը վերադարձնում է փոփոխված տողերի քանակը։ Բայց հիշեք՝ այդ քանակը ցույց է տալիս միայն այն տողերը, որոնք իրապես փոփոխվել են։ Օրինակ, եթե արդեն իսկ կան uid=5 և status=1 ունեցող գրառումներ, ապա դրանք չեն փոփոխվի, ուստի չեն հաշվարկվի որպես փոփոխված։ Այսինքն՝ execute()-ի վերադարձած արժեքը միշտ չէ, որ ցույց է տալիս այն տողերի քանակը, որոնք համապատասխանում են WHERE պայմանին։