Search…
Group By and Having

groupBy

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
1
query.from( "users" )
2
.groupBy( "country" );
Copied!
MySQL
1
SELECT *
2
FROM `users`
3
GROUP BY `country`
Copied!
You can also pass a list of column names. A single comma (",") will be used as the delimiter.
QueryBuilder
1
query.from( "users" )
2
.groupBy( "country,city" );
Copied!
MySQL
1
SELECT *
2
FROM `users`
3
GROUP BY `country`, `city`
Copied!
An array of column names can be provided.
QueryBuilder
1
query.from( "users" )
2
.groupBy( [ "country", "city" ] );
Copied!
MySQL
1
SELECT *
2
FROM `users`
3
GROUP BY `country`, `city`
Copied!
Calling groupBy multiple times will to the current groups.
QueryBuilder
1
query.from( "users" )
2
.groupBy( "country" )
3
.groupBy( "city" );
Copied!
MySQL
1
SELECT *
2
FROM `users`
3
GROUP BY `country`, `city`
Copied!
An Expression can be passed in place of a column.
QueryBuilder
1
query.from( "users" )
2
.groupBy( query.raw( "DATE(created_at)" ) );
Copied!
MySQL
1
SELECT *
2
FROM `users`
3
GROUP BY DATE(created_at)
Copied!

having

Name
Type
Required
Default
Description
column
string | Expression
true
The name of the column or Expression with which to constrain the query.
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
The value with which to constrain the column. An Expression can be passed as well.
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
1
query.from( "users" )
2
.groupBy( "email" )
3
.having( "email", ">", 1 );
Copied!
MySQL
1
SELECT *
2
FROM `users`
3
GROUP BY `email`
4
HAVING `email` > ?
Copied!
Expressions can be used in place of the column or the value.
QueryBuilder
1
query.from( "users" )
2
.groupBy( "email" )
3
.having( query.raw( "COUNT(email)" ), ">", 1 );
Copied!
MySQL
1
SELECT *
2
FROM `users`
3
GROUP BY `email`
4
HAVING COUNT(email) > ?
Copied!
Copy link
Edit on GitHub