logo

Paleta - Deixe colorido🎨

Palette — Construtor visual de páginas. Não precisa ser designer.

Demonstração ao vivo Baixar Palette

Scroll
08/05/2020, by maria

Для группировки по заданному полю используйте метод 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. Обратите внимание, что первый параметр наличия не фильтруется перед отправкой в базу данных, поэтому пользовательские значения должны передаваться через второй параметр.

Примеры groupBy и having

Следующий код подсчитывает количество узлов на UID:

$query = $connection->select('node', 'n')
  ->fields('n', ['uid']);
$query->addExpression('count(uid)', 'uid_node_count');
$query->groupBy("n.uid");
$query->execute();

O bloco seguinte pega o exemplo anterior de contagem por uid e restringe os resultados aos uids com pelo menos 2 registros.

$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();