Խմբավորում
Նշված դաշտով խմբավորման համար օգտագործեք groupBy() մեթոդը։
$query->groupBy('uid');
Վերը նշված կոդը կասի հարցմանը խմբավորել տվյալները uid դաշտով։ Խնդրում ենք նկատի ունենալ, որ դաշտի անունը պետք է լինի addField() կամ addExpression() մեթոդներով ստեղծված պսևդոնիմ, ուստի շատ դեպքերում ցանկալի է օգտագործել այդ մեթոդների վերադարձված արժեքները, որպեսզի համոզվեք ճիշտ պսևդոնիմ է օգտագործվում։
Դաշտով, օրինակ՝ uid, խմբավորված տողերի քանակ ստանալու համար կարող եք անել հետևյալը.
$query->addExpression('count(uid)', 'uid_node_count');
Բազմաթիվ դաշտերով խմբավորելու համար պարզապես կանչեք groupBy() մի քանի անգամ՝ անհրաժեշտ հերթականությամբ։
Having
Կարող եք ավելացնել պայմաններ ագրեգացված արժեքների համար։
$query->having('COUNT(uid) >= :matches', [':matches' => $limit]);
Այս դեպքում կընտրվեն այն դեպքերը, երբ uid-ների քանակը մեծ կամ հավասար է $limit-ին։ Խնդրում ենք նկատի ունենալ, որ having() առաջին պարամետրը չի ֆիլտրավորվում նախքան տվյալների բազա ուղարկելը, այդ պատճառով օգտագործողի արժեքները պետք է փոխանցվեն երկրորդ պարամետրի միջոցով։
groupBy և having օրինակներ
Հաջորդ կոդը հաշվում է հանգույցների քանակը ըստ UID.
$query = $connection->select('node', 'n') ->fields('n', ['uid']); $query->addExpression('count(uid)', 'uid_node_count'); $query->groupBy("n.uid"); $query->execute();
Հաջորդ կոդը վերցնում է նախորդ օրինակն ու սահմանափակում արդյունքները՝ ընտրելով միայն այն uid-երը, որոնք ունեն առնվազն 2 գրառում։
$query = $connection->select('node', 'n') ->fields('n',['uid']); $query->addExpression('count(uid)', 'uid_node_count'); $query->groupBy("n.uid"); $query->having('COUNT(uid) >= :matches', [':matches' => 2]); $results = $query->execute();
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.