Պայմաններ
Դինամիկ հարցման մեջ WHERE պայման ավելացնելու համար օգտագործեք condition() մեթոդը՝
$query->condition('bundle', 'article', '=');
Վերը նշված կոդը հրահանգում է հարցման արդյունքները զտել՝ ընտրելով միայն «article» փաթեթի գրառումները։ Հիշեք, որ դաշտի անունը պետք է լինել այն անվանումը, որը ստեղծվել է addField() կամ addExpression() մեթոդներով։
Condition մեթոդի պարամետրերը
condition() մեթոդը ընդունում է երեք պարամետր՝
- $field - համեմատության դաշտը (պարտադիր)
- $value - համեմատության արժեքը (ոչ պարտադիր, լռությամբ NULL)
- $operator - համեմատության օպերատորը (ոչ պարտադիր, լռությամբ ‘=’)
Աջակցվող օպերատորներ
Համընդհանուր համեմատական օպերատորները՝ '=', '<>', '<', '<=', '>', '>=', աջակցվում են բոլոր տվյալների բազաների տեսակներում։
IN, NOT IN օպերատորները
IN և NOT IN օպերատորները $value պարամետրով ընդունում են զանգված և համեմատում դաշտի արժեքը զանգվածի արժեքների հետ։
$users = [2,5,17,22]; $query->condition('uid', $users, 'IN');
Այս դեպքում հարցումը կվերադարձնի այն գրառումները, որտեղ uid-ը հավասար է 2, 5, 17 կամ 22։
BETWEEN և NOT BETWEEN օպերատորները
BETWEEN և NOT BETWEEN օպերատորները $value-ով ստանում են երկու արժեք պարունակող զանգված։
$query->condition('count', [5,10], 'BETWEEN');
Այս դեպքում հարցումը կվերադարձնի գրառումներ, որտեղ count արժեքը գտնվում է 5-ից 10 միջակայքում։
IS NULL, IS NOT NULL, EXISTS և NOT EXISTS օգտագործումը
Համաձայնության համաձայն օգտագործեք հետևյալ մեթոդները՝ ոչ թե condition() մեթոդի հետ միասին․
$query->isNull($field); $query->isNotNull($field); $query->exists($field); $query->notExists($field);
Չնայած հետևյալ պայմանը պետք է աշխատի՝ $query->condition($field, NULL, 'IS NOT NULL');, վերոնշյալ մեթոդների օգտագործումը ավելի խորհուրդ է տրվում։
Այլ օպերատորներ
Այլ օպերատորներ, ինչպիսիք են BINARY-ը կամ տվյալ տվյալների բազայի հատուկ օպերատորները, կարող են աշխատել կամ չաշխատել։ Կանխատեսեք դա մոդուլներ մշակելիս, որոնք կարող են օգտագործվել տարբեր տվյալների բազաներում։
Մի քանի condition() օգտագործում
Հարցման զտման համար կարելի է ավելացնել մի քանի condition() մեթոդ։
$query->condition('bundle', 'article', '='); $query->condition('status', '1', '=');
Եթե մի քանի condition() կան, ինչպես վերևում, ապա բոլոր պայմանները պետք է կատարվեն, որպեսզի գրառումը հայտնվի արդյունքներում (այլ խոսքով, պայմանները միացվում են AND-ով)։
Խորհուրդ․ Եթե ցանկանում եք միայն OR պայմաններ, օգտագործեք orConditionGroup։
Պայմանների խմբեր
Պայմանների խմբերն օգտագործվում են WHERE արտահայտություններն ավելի բարդ ձևավորելու համար (ներառյալ OR-ները)։ Կան երկու տեսակի խմբեր՝
- orConditionGroup — վերադարձնում է պայմանների օբյեկտ, որոնք միացված են OR-ով
- andConditionGroup — վերադարձնում է պայմանների օբյեկտ, որոնք միացված են AND-ով
Պայմանների խմբերը վերադարձնում են օբյեկտ, որը հետո ավելացվում է հարցման պայմանների մեջ։
// Ստեղծել orConditionGroup $orGroup = $query->orConditionGroup() ->condition('promoted', 1) ->condition('uid', [2,4,7,22], 'IN'); // Ավելացնել խմբակը հարցմանը $query->condition($orGroup);
Այս օրինակով «promoted» և «uid» պայմանները միացված են OR-ով և ավելացվում են WHERE-ում՝ որպես
WHERE (promoted = 1 OR uid IN (2,4,7,22))
Կարելի է ավելացնել մի քանի orConditionGroup և andConditionGroup խմբեր, որոնք կարող են լինել ներառված՝ ստանալով ավելի բարդ WHERE արտահայտություններ։
Օրինակ՝
WHERE (a = 1 OR b = 1) AND ((c = 1 AND d = 1) OR (e = 1))
Հարցման պայմանները կարող են գրանցվել խմբերով՝
$orGroup1 = $query->orConditionGroup() ->condition('a', 1) ->condition('b', 1); $andGroup1 = $query->andConditionGroup() ->condition('c', 1) ->condition('d', 1); $orGroup2 = $query->orConditionGroup() ->condition($andGroup1) ->condition('e', 1); $query->condition($orGroup1); $query->condition($orGroup2);
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.