Դաշտեր
Ավելացնել դաշտ
Select հարցման մեջ դաշտ ավելացնելու համար օգտագործեք addField() մեթոդը՝
$title_field = $query->addField('n', 'title', 'my_title');
Վերը նշված կոդը հարցմանն հրահանգում է ընտրել «n» պսևդոնիմով աղյուսակի «title» դաշտը և նրան տալ «my_title» պսևդոնիմ: Եթե պսևդոնիմը չի նշվում, այն ավտոմատ կստեղծվի: Շատ դեպքերում ստեղծված պսևդոնիմը կլինի դաշտի անունը: Այս օրինակով՝ դա կլինի «title»: Եթե այդ պսևդոնիմը արդեն գոյություն ունի, պսևդոնիմը կկոչվի աղյուսակի անունը և դաշտի անունը՝ այս դեպքում «n_title»: Եթե դա էլ արդեն կա, պսևդոնիմին կավելացվի միակողմանի ցուցիչ մինչև գտնվի օգտագործված չլինող անուն, օրինակ՝ «n_title_2»:
Նշեք, որ եթե դուք ինքներդ եք կազմում և լրացնում հարցումը առանց պսևդոնիմ նշելու, իսկ լռությամբ նշված պսևդոնիմը հասանելի չէ, մեծ հավանականությամբ ձեր կոդում կա սխալ: Սակայն hook_query_alter() իրականացնելիս դուք չեք կարող իմանալ, թե ինչ պսևդոնիմներ արդեն օգտագործվում են, այդ պատճառով միշտ պետք է օգտագործեք ստեղծված պսևդոնիմները։
Ավելացնել մի քանի դաշտ
Մի քանի դաշտ ընտրելու համար կանչեք addField() անհրաժեշտ դաշտերի համար համապատասխան հերթականությամբ: Նշեք, որ մեծ մասամբ դաշտերի հերթականությունը նշանակություն չունի, և եթե նշանակություն ունի, ապա դա մոդուլի բիզնես տրամաբանության թերություն է։
Այլընտրանքորեն կարող եք օգտագործել fields() մեթոդը մի քանի դաշտ միանգամից ավելացնելու համար՝
$query->fields('n', ['nid', 'title', 'created', 'uid']);
Վերը նշված մեթոդը հավասարազոր է addField() չորս անգամ կանչելուն՝ յուրաքանչյուր դաշտի համար մեկական անգամ: Սակայն fields() չի աջակցում դաշտի համար պսևդոնիմ նշելուն: Այն վերադարձնում է հարցման օբյեկտը, ինչը թույլ է տալիս մեթոդը շղթայական կանչել: Եթե անհրաժեշտ է իմանալ ստեղծված պսևդոնիմը, օգտագործեք addField() կամ getFields()՝ ներքին դաշտերի հում կառուցվածքին հասնելու համար:
fields() մեթոդը առանց դաշտերի ցուցակի կանչելու դեպքում կստացվի «SELECT *» հարցում։
$query->fields('n');
Սա կհայտնվի որպես «n.*» դաշտերի ցանկում: Նշեք, որ պսևդոնիմներ չեն ստեղծվում: Եթե այդպիսի աղյուսակներից մի քանիսը պարունակում են նույնանուն դաշտեր, որոնք ուղղակի նշվում են, արդյունքի հավաքածուում կարող է առաջանալ դաշտի անվան բախում: Այդ դեպքում արդյունքներում կլինի միայն մեկ դաշտ այդ անվամբ։ Այս պատճառով խորհուրդ չի տրվում օգտագործել SELECT *:
Միայն մեկ դաշտ վերադարձնել՝ օգտագործելով fetchField
Միայն մեկ դաշտ վերադարձնելու համար օգտագործեք fetchField մեթոդը՝ օրինակ՝
$query = $connection->select('node', 'n'); $query->condition('n.nid', 123); $query->addField('n', 'title'); $result = $query->execute(); return $result->fetchField();
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.