Group By and Having
Name | Type | Required | Default | Description |
groups | string | array | true | | A single column name, a list of column names, or an array of column names to group by. An Expression can be passed as well. |
Passing a single string will group by that one column.
QueryBuilder
query.from( "users" )
.groupBy( "country" );
MySQL
SELECT *
FROM `users`
GROUP BY `country`
You can also pass a list of column names. A single comma (
","
) will be used as the delimiter.QueryBuilder
query.from( "users" )
.groupBy( "country,city" );
MySQL
SELECT *
FROM `users`
GROUP BY `country`, `city`
An array of column names can be provided.
QueryBuilder
query.from( "users" )
.groupBy( [ "country", "city" ] );
MySQL
SELECT *
FROM `users`
GROUP BY `country`, `city`
Calling
groupBy
multiple times will to the current groups.QueryBuilder
query.from( "users" )
.groupBy( "country" )
.groupBy( "city" );
MySQL
SELECT *
FROM `users`
GROUP BY `country`, `city`
QueryBuilder
query.from( "users" )
.groupBy( query.raw( "DATE(created_at)" ) );
MySQL
SELECT *
FROM `users`
GROUP BY DATE(created_at)
Name | Type | Required | Default | Description |
column | true | | ||
operator | any | false | | The operator to use for the constraint (i.e. "=", "<", ">=", etc.). A value can be passed as the operator and the value left null as a shortcut for equals (e.g. where( "column", 1 ) == where( "column", "=", 1 ) ). |
value | any | false | | |
combinator | string | false | "and" | The boolean combinator for the clause. Valid options are "and" or "or" . Avoid passing this parameter explicitly. Where possible use the andHaving and orHaving methods instead. |
Adds a having clause to a query.
QueryBuilder
query.from( "users" )
.groupBy( "email" )
.having( "email", ">", 1 );
MySQL
SELECT *
FROM `users`
GROUP BY `email`
HAVING `email` > ?
Expressions
can be used in place of the column or the value.QueryBuilder
query.from( "users" )
.groupBy( "email" )
.having( query.raw( "COUNT(email)" ), ">", 1 );
MySQL
SELECT *
FROM `users`
GROUP BY `email`
HAVING COUNT(email) > ?
Last modified 4mo ago