JoinClause
class JoinClause extends Builder (View source)
Traits
Properties
static protected array | $macros | The registered string macros. |
from Macroable |
ConnectionInterface | $connection | The database connection instance. |
from Builder |
Grammar | $grammar | The database query grammar instance. |
from Builder |
Processor | $processor | The database query post processor instance. |
from Builder |
array | $bindings | The current query value bindings. |
from Builder |
array | $aggregate | An aggregate function and column to be run. |
from Builder |
array | $columns | The columns that should be returned. |
from Builder |
bool|array | $distinct | Indicates if the query returns distinct results. |
from Builder |
string | $from | The table which the query is targeting. |
from Builder |
array | $joins | The table joins for the query. |
from Builder |
array | $wheres | The where constraints for the query. |
from Builder |
array | $groups | The groupings for the query. |
from Builder |
array | $havings | The having constraints for the query. |
from Builder |
array | $orders | The orderings for the query. |
from Builder |
int | $limit | The maximum number of records to return. |
from Builder |
int | $offset | The number of records to skip. |
from Builder |
array | $unions | The query union statements. |
from Builder |
int | $unionLimit | The maximum number of union records to return. |
from Builder |
int | $unionOffset | The number of union records to skip. |
from Builder |
array | $unionOrders | The orderings for the union query. |
from Builder |
string|bool | $lock | Indicates whether row locking is being used. |
from Builder |
array | $operators | All of the available clause operators. |
from Builder |
bool | $useWritePdo | Whether use write pdo for select. |
from Builder |
string | $type | The type of join being performed. |
|
string | $table | The table the join clause is joining to. |
|
protected ConnectionInterface | $parentConnection | The connection of the parent query builder. |
|
protected Grammar | $parentGrammar | The grammar of the parent query builder. |
|
protected Processor | $parentProcessor | The processor of the parent query builder. |
|
protected string | $parentClass | The class name of the parent query builder. |
Methods
Execute a callback over each item while chunking.
Chunk the results of a query by comparing IDs.
Execute a callback over each item while chunking by id.
Execute the query and get the first result.
Apply the callback's query changes if the given "value" is true.
Apply the callback's query changes if the given "value" is false.
Create a new length-aware paginator instance.
Create a new simple paginator instance.
Forward a method call to the given object.
Throw a bad method call exception for the given method.
Mix another object into the class.
Dynamically handle calls to the class.
Dynamically handle calls to the class.
Add a new "raw" select expression to the query.
Set the table which the query is targeting.
Add a join clause to the query.
Add a "join where" clause to the query.
Add a subquery join clause to the query.
Add a left join to the query.
Add a "join where" clause to the query.
Add a subquery left join to the query.
Add a right join to the query.
Add a "right join where" clause to the query.
Add a subquery right join to the query.
Add a "cross join" clause to the query.
Merge an array of where clauses and bindings.
Add a basic where clause to the query.
Add an array of where clauses to the query.
Prepare the value and operator for a where clause.
Determine if the given operator and value combination is legal.
Add an "or where" clause to the query.
Add a "where" clause comparing two columns to the query.
Add an "or where" clause comparing two columns to the query.
Add a raw where clause to the query.
Add a raw or where clause to the query.
Add a "where in" clause to the query.
Add a "where not in" clause to the query.
Add an "or where not in" clause to the query.
Add a "where in raw" clause for integer values to the query.
Add a "where not in raw" clause for integer values to the query.
Add a "where null" clause to the query.
Add an "or where null" clause to the query.
Add a "where not null" clause to the query.
Add a where between statement to the query.
Add an or where between statement to the query.
Add a where not between statement to the query.
Add an or where not between statement to the query.
Add an "or where not null" clause to the query.
Add a "where date" statement to the query.
Add an "or where date" statement to the query.
Add a "where time" statement to the query.
Add an "or where time" statement to the query.
Add a "where day" statement to the query.
Add an "or where day" statement to the query.
Add a "where month" statement to the query.
Add an "or where month" statement to the query.
Add a "where year" statement to the query.
Add an "or where year" statement to the query.
Add a date based (year, month, day, time) statement to the query.
Add another query builder as a nested where to the query builder.
Add a full sub-select to the query.
Add an exists clause to the query.
Add a where not exists clause to the query.
Add an exists clause to the query.
Adds a where condition using row values.
Adds a or where condition using row values.
Add a "where JSON contains" clause to the query.
Add a "or where JSON contains" clause to the query.
Add a "where JSON not contains" clause to the query.
Add a "or where JSON not contains" clause to the query.
Add a "where JSON length" clause to the query.
Add a "or where JSON length" clause to the query.
Handles dynamic "where" clauses to the query.
Add a single dynamic where clause statement to the query.
Add a raw groupBy clause to the query.
Add a "having" clause to the query.
Add a "or having" clause to the query.
Add a "having between " clause to the query.
Add a raw having clause to the query.
Add a raw or having clause to the query.
Add an "order by" clause to the query.
Add an "order by" clause for a timestamp to the query.
Add an "order by" clause for a timestamp to the query.
Add a raw "order by" clause to the query.
Constrain the query to the previous "page" of results before a given ID.
Constrain the query to the next "page" of results after a given ID.
Get an array with all orders with a given column removed.
Execute a query for a single record by ID.
Get a single column's value from the first result of a query.
Paginate the given query into a simple paginator.
Get a paginator only supporting simple next and previous links.
Get the count of the total records for the paginator.
Remove the column aliases since they will break count queries.
Get an array with the values of a given column.
Strip off the table name or alias from a column identifier.
Retrieve column values from rows represented as objects.
Retrieve column values from rows represented as arrays.
Concatenate values of a given column as a string.
Execute an aggregate function on the database.
Execute a numeric aggregate function on the database.
Set the aggregate property without running the query.
Execute the given callback while selecting the given columns.
Insert a new record into the database while ignoring errors.
Insert a new record and get the value of the primary key.
Insert new records into the table using a subquery.
Insert or update a record matching the attributes, and fill it with values.
Increment a column's value by a given amount.
Decrement a column's value by a given amount.
Create a new query instance for sub-query.
Set the bindings on the query builder.
Remove all of the expressions from a list of bindings.
Get a scalar type value from an unknown type of input.
Determine if the value is a query builder instance or a Closure.
Clone the query without the given bindings.
Add an "on" clause to the join.
Create a new parent query instance.
Details
bool
chunk(int $count, callable $callback)
Chunk the results of the query.
bool
each(callable $callback, int $count = 1000)
Execute a callback over each item while chunking.
bool
chunkById(int $count, callable $callback, string|null $column = null, string|null $alias = null)
Chunk the results of a query by comparing IDs.
bool
eachById(callable $callback, int $count = 1000, string|null $column = null, string|null $alias = null)
Execute a callback over each item while chunking by id.
Model|object|BuildsQueries|null
first(array|string $columns = ['*'])
Execute the query and get the first result.
mixed|$this
when(mixed $value, callable $callback, callable|null $default = null)
Apply the callback's query changes if the given "value" is true.
$this
tap(callable $callback)
Pass the query to a given callback.
mixed|$this
unless(mixed $value, callable $callback, callable|null $default = null)
Apply the callback's query changes if the given "value" is false.
protected LengthAwarePaginator
paginator(Collection $items, int $total, int $perPage, int $currentPage, array $options)
Create a new length-aware paginator instance.
protected Paginator
simplePaginator(Collection $items, int $perPage, int $currentPage, array $options)
Create a new simple paginator instance.
protected mixed
forwardCallTo(mixed $object, string $method, array $parameters)
Forward a method call to the given object.
static protected void
throwBadMethodCallException(string $method)
Throw a bad method call exception for the given method.
static void
macro(string $name, object|callable $macro)
Register a custom macro.
static void
mixin(object $mixin, bool $replace = true)
Mix another object into the class.
static bool
hasMacro(string $name)
Checks if macro is registered.
static mixed
__callStatic(string $method, array $parameters)
Dynamically handle calls to the class.
mixed
__call(string $method, array $parameters)
Dynamically handle calls to the class.
void
__construct(Builder $parentQuery, string $type, string $table)
Create a new join clause instance.
$this
select(array|mixed $columns = ['*'])
Set the columns to be selected.
Builder|Builder
selectSub(Closure|$this|string $query, string $as)
Add a subselect expression to the query.
Builder|Builder
selectRaw(string $expression, array $bindings = [])
Add a new "raw" select expression to the query.
Builder|Builder
fromSub(Closure|Builder|string $query, string $as)
Makes "from" fetch from a subquery.
Builder|Builder
fromRaw(string $expression, mixed $bindings = [])
Add a raw from clause to the query.
protected array
parseSub(mixed $query)
Parse the subquery into SQL and bindings.
$this
addSelect(array|mixed $column)
Add a new select column to the query.
$this
distinct()
Force the query to only return distinct results.
$this
from(Closure|Builder|string $table, string|null $as = null)
Set the table which the query is targeting.
$this
join(string $table, Closure|string $first, string|null $operator = null, string|null $second = null, string $type = 'inner', bool $where = false)
Add a join clause to the query.
Builder|Builder
joinWhere(string $table, Closure|string $first, string $operator, string $second, string $type = 'inner')
Add a "join where" clause to the query.
Builder|Builder
joinSub(Closure|Builder|string $query, string $as, Closure|string $first, string|null $operator = null, string|null $second = null, string $type = 'inner', bool $where = false)
Add a subquery join clause to the query.
Builder|Builder
leftJoin(string $table, Closure|string $first, string|null $operator = null, string|null $second = null)
Add a left join to the query.
Builder|Builder
leftJoinWhere(string $table, Closure|string $first, string $operator, string $second)
Add a "join where" clause to the query.
Builder|Builder
leftJoinSub(Closure|Builder|string $query, string $as, Closure|string $first, string|null $operator = null, string|null $second = null)
Add a subquery left join to the query.
Builder|Builder
rightJoin(string $table, Closure|string $first, string|null $operator = null, string|null $second = null)
Add a right join to the query.
Builder|Builder
rightJoinWhere(string $table, Closure|string $first, string $operator, string $second)
Add a "right join where" clause to the query.
Builder|Builder
rightJoinSub(Closure|Builder|string $query, string $as, Closure|string $first, string|null $operator = null, string|null $second = null)
Add a subquery right join to the query.
Builder|Builder
crossJoin(string $table, Closure|string|null $first = null, string|null $operator = null, string|null $second = null)
Add a "cross join" clause to the query.
protected JoinClause
newJoinClause(Builder $parentQuery, string $type, string $table)
Get a new join clause.
void
mergeWheres(array $wheres, array $bindings)
Merge an array of where clauses and bindings.
$this
where(Closure|string|array $column, mixed $operator = null, mixed $value = null, string $boolean = 'and')
Add a basic where clause to the query.
protected $this
addArrayOfWheres(array $column, string $boolean, string $method = 'where')
Add an array of where clauses to the query.
array
prepareValueAndOperator(string $value, string $operator, bool $useDefault = false)
Prepare the value and operator for a where clause.
protected bool
invalidOperatorAndValue(string $operator, mixed $value)
Determine if the given operator and value combination is legal.
Prevents using Null values with invalid operators.
protected bool
invalidOperator(string $operator)
Determine if the given operator is supported.
Builder|Builder
orWhere(Closure|string|array $column, mixed $operator = null, mixed $value = null)
Add an "or where" clause to the query.
Builder|Builder
whereColumn(string|array $first, string|null $operator = null, string|null $second = null, string|null $boolean = 'and')
Add a "where" clause comparing two columns to the query.
Builder|Builder
orWhereColumn(string|array $first, string|null $operator = null, string|null $second = null)
Add an "or where" clause comparing two columns to the query.
$this
whereRaw(string $sql, mixed $bindings = [], string $boolean = 'and')
Add a raw where clause to the query.
Builder|Builder
orWhereRaw(string $sql, mixed $bindings = [])
Add a raw or where clause to the query.
$this
whereIn(string $column, mixed $values, string $boolean = 'and', bool $not = false)
Add a "where in" clause to the query.
Builder|Builder
whereNotIn(string $column, mixed $values, string $boolean = 'and')
Add a "where not in" clause to the query.
Builder|Builder
orWhereNotIn(string $column, mixed $values)
Add an "or where not in" clause to the query.
$this
whereIntegerInRaw(string $column, Arrayable|array $values, string $boolean = 'and', bool $not = false)
Add a "where in raw" clause for integer values to the query.
$this
whereIntegerNotInRaw(string $column, Arrayable|array $values, string $boolean = 'and')
Add a "where not in raw" clause for integer values to the query.
$this
whereNull(string|array $columns, string $boolean = 'and', bool $not = false)
Add a "where null" clause to the query.
Builder|Builder
whereNotNull(string|array $columns, string $boolean = 'and')
Add a "where not null" clause to the query.
$this
whereBetween(string $column, array $values, string $boolean = 'and', bool $not = false)
Add a where between statement to the query.
Builder|Builder
orWhereBetween(string $column, array $values)
Add an or where between statement to the query.
Builder|Builder
whereNotBetween(string $column, array $values, string $boolean = 'and')
Add a where not between statement to the query.
Builder|Builder
orWhereNotBetween(string $column, array $values)
Add an or where not between statement to the query.
Builder|Builder
whereDate(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and')
Add a "where date" statement to the query.
Builder|Builder
orWhereDate(string $column, string $operator, DateTimeInterface|string|null $value = null)
Add an "or where date" statement to the query.
Builder|Builder
whereTime(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and')
Add a "where time" statement to the query.
Builder|Builder
orWhereTime(string $column, string $operator, DateTimeInterface|string|null $value = null)
Add an "or where time" statement to the query.
Builder|Builder
whereDay(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and')
Add a "where day" statement to the query.
Builder|Builder
orWhereDay(string $column, string $operator, DateTimeInterface|string|null $value = null)
Add an "or where day" statement to the query.
Builder|Builder
whereMonth(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and')
Add a "where month" statement to the query.
Builder|Builder
orWhereMonth(string $column, string $operator, DateTimeInterface|string|null $value = null)
Add an "or where month" statement to the query.
Builder|Builder
whereYear(string $column, string $operator, DateTimeInterface|string|int|null $value = null, string $boolean = 'and')
Add a "where year" statement to the query.
Builder|Builder
orWhereYear(string $column, string $operator, DateTimeInterface|string|int|null $value = null)
Add an "or where year" statement to the query.
protected $this
addDateBasedWhere(string $type, string $column, string $operator, mixed $value, string $boolean = 'and')
Add a date based (year, month, day, time) statement to the query.
Builder|Builder
whereNested(Closure $callback, string $boolean = 'and')
Add a nested where statement to the query.
Builder
forNestedWhere()
Create a new query instance for nested where condition.
$this
addNestedWhereQuery(Builder|Builder $query, string $boolean = 'and')
Add another query builder as a nested where to the query builder.
protected $this
whereSub(string $column, string $operator, Closure $callback, string $boolean)
Add a full sub-select to the query.
$this
whereExists(Closure $callback, string $boolean = 'and', bool $not = false)
Add an exists clause to the query.
Builder|Builder
orWhereExists(Closure $callback, bool $not = false)
Add an or exists clause to the query.
Builder|Builder
whereNotExists(Closure $callback, string $boolean = 'and')
Add a where not exists clause to the query.
$this
addWhereExistsQuery(Builder $query, string $boolean = 'and', bool $not = false)
Add an exists clause to the query.
$this
whereRowValues(array $columns, string $operator, array $values, string $boolean = 'and')
Adds a where condition using row values.
$this
orWhereRowValues(array $columns, string $operator, array $values)
Adds a or where condition using row values.
$this
whereJsonContains(string $column, mixed $value, string $boolean = 'and', bool $not = false)
Add a "where JSON contains" clause to the query.
$this
orWhereJsonContains(string $column, mixed $value)
Add a "or where JSON contains" clause to the query.
$this
whereJsonDoesntContain(string $column, mixed $value, string $boolean = 'and')
Add a "where JSON not contains" clause to the query.
$this
orWhereJsonDoesntContain(string $column, mixed $value)
Add a "or where JSON not contains" clause to the query.
$this
whereJsonLength(string $column, mixed $operator, mixed $value = null, string $boolean = 'and')
Add a "where JSON length" clause to the query.
$this
orWhereJsonLength(string $column, mixed $operator, mixed $value = null)
Add a "or where JSON length" clause to the query.
$this
dynamicWhere(string $method, array $parameters)
Handles dynamic "where" clauses to the query.
protected void
addDynamic(string $segment, string $connector, array $parameters, int $index)
Add a single dynamic where clause statement to the query.
$this
groupBy(array|string ...$groups)
Add a "group by" clause to the query.
$this
groupByRaw(string $sql, array $bindings = [])
Add a raw groupBy clause to the query.
$this
having(string $column, string|null $operator = null, string|null $value = null, string $boolean = 'and')
Add a "having" clause to the query.
Builder|Builder
orHaving(string $column, string|null $operator = null, string|null $value = null)
Add a "or having" clause to the query.
Builder|Builder
havingBetween(string $column, array $values, string $boolean = 'and', bool $not = false)
Add a "having between " clause to the query.
$this
havingRaw(string $sql, array $bindings = [], string $boolean = 'and')
Add a raw having clause to the query.
Builder|Builder
orHavingRaw(string $sql, array $bindings = [])
Add a raw or having clause to the query.
$this
orderBy(Closure|Builder|Expression|string $column, string $direction = 'asc')
Add an "order by" clause to the query.
$this
orderByDesc(string $column)
Add a descending "order by" clause to the query.
Builder|Builder
latest(string $column = 'created_at')
Add an "order by" clause for a timestamp to the query.
Builder|Builder
oldest(string $column = 'created_at')
Add an "order by" clause for a timestamp to the query.
$this
inRandomOrder(string $seed = '')
Put the query's results in random order.
$this
orderByRaw(string $sql, array $bindings = [])
Add a raw "order by" clause to the query.
$this
offset(int $value)
Set the "offset" value of the query.
$this
limit(int $value)
Set the "limit" value of the query.
Builder|Builder
forPageBeforeId(int $perPage = 15, int|null $lastId = 0, string $column = 'id')
Constrain the query to the previous "page" of results before a given ID.
Builder|Builder
forPageAfterId(int $perPage = 15, int|null $lastId = 0, string $column = 'id')
Constrain the query to the next "page" of results after a given ID.
protected array
removeExistingOrdersFor(string $column)
Get an array with all orders with a given column removed.
Builder|Builder
union(Builder|Closure $query, bool $all = false)
Add a union statement to the query.
$this
lock(string|bool $value = true)
Lock the selected rows in the table.
Builder
lockForUpdate()
Lock the selected rows in the table for updating.
Builder
sharedLock()
Share lock the selected rows in the table.
string
toSql()
Get the SQL representation of the query.
mixed|Builder
find(int|string $id, array $columns = ['*'])
Execute a query for a single record by ID.
mixed
value(string $column)
Get a single column's value from the first result of a query.
Collection
get(array|string $columns = ['*'])
Execute the query as a "select" statement.
protected array
runSelect()
Run the query as a "select" statement against the connection.
LengthAwarePaginator
paginate(int $perPage = 15, array $columns = ['*'], string $pageName = 'page', int|null $page = null)
Paginate the given query into a simple paginator.
Paginator
simplePaginate(int $perPage = 15, array $columns = ['*'], string $pageName = 'page', int|null $page = null)
Get a paginator only supporting simple next and previous links.
This is more efficient on larger data-sets, etc.
int
getCountForPagination(array $columns = ['*'])
Get the count of the total records for the paginator.
protected array
runPaginationCountQuery(array $columns = ['*'])
Run a pagination count query.
protected array
withoutSelectAliases(array $columns)
Remove the column aliases since they will break count queries.
LazyCollection
cursor()
Get a lazy collection for the given query.
protected void
enforceOrderBy()
Throw an exception if the query doesn't have an orderBy clause.
Collection
pluck(string $column, string|null $key = null)
Get an array with the values of a given column.
protected string|null
stripTableForPluck(string $column)
Strip off the table name or alias from a column identifier.
protected Collection
pluckFromObjectColumn(array $queryResult, string $column, string $key)
Retrieve column values from rows represented as objects.
protected Collection
pluckFromArrayColumn(array $queryResult, string $column, string $key)
Retrieve column values from rows represented as arrays.
string
implode(string $column, string $glue = '')
Concatenate values of a given column as a string.
bool
exists()
Determine if any rows exist for the current query.
bool
doesntExist()
Determine if no rows exist for the current query.
mixed
existsOr(Closure $callback)
Execute the given callback if no rows exist for the current query.
mixed
doesntExistOr(Closure $callback)
Execute the given callback if rows exist for the current query.
int
count(string $columns = '*')
Retrieve the "count" result of the query.
mixed
min(string $column)
Retrieve the minimum value of a given column.
mixed
max(string $column)
Retrieve the maximum value of a given column.
mixed
sum(string $column)
Retrieve the sum of the values of a given column.
mixed
avg(string $column)
Retrieve the average of the values of a given column.
mixed
average(string $column)
Alias for the "avg" method.
mixed
aggregate(string $function, array $columns = ['*'])
Execute an aggregate function on the database.
float|int
numericAggregate(string $function, array $columns = ['*'])
Execute a numeric aggregate function on the database.
protected $this
setAggregate(string $function, array $columns)
Set the aggregate property without running the query.
protected mixed
onceWithColumns(array $columns, callable $callback)
Execute the given callback while selecting the given columns.
After running the callback, the columns are reset to the original value.
bool
insert(array $values)
Insert a new record into the database.
int
insertOrIgnore(array $values)
Insert a new record into the database while ignoring errors.
int
insertGetId(array $values, string|null $sequence = null)
Insert a new record and get the value of the primary key.
int
insertUsing(array $columns, Closure|Builder|string $query)
Insert new records into the table using a subquery.
int
update(array $values)
Update a record in the database.
bool
updateOrInsert(array $attributes, array $values = [])
Insert or update a record matching the attributes, and fill it with values.
int
increment(string $column, float|int $amount = 1, array $extra = [])
Increment a column's value by a given amount.
int
decrement(string $column, float|int $amount = 1, array $extra = [])
Decrement a column's value by a given amount.
int
delete(mixed $id = null)
Delete a record from the database.
void
truncate()
Run a truncate statement on the table.
Builder
newQuery()
Get a new instance of the join clause builder.
protected Builder
forSubQuery()
Create a new query instance for sub-query.
Expression
raw(mixed $value)
Create a raw database expression.
array
getBindings()
Get the current query value bindings in a flattened array.
array
getRawBindings()
Get the raw array of bindings.
$this
setBindings(array $bindings, string $type = 'where')
Set the bindings on the query builder.
$this
addBinding(mixed $value, string $type = 'where')
Add a binding to the query.
$this
mergeBindings(Builder $query)
Merge an array of bindings into our bindings.
protected array
cleanBindings(array $bindings)
Remove all of the expressions from a list of bindings.
protected mixed
flattenValue(mixed $value)
Get a scalar type value from an unknown type of input.
protected string
defaultKeyName()
Get the default key name of the table.
ConnectionInterface
getConnection()
Get the database connection instance.
Processor
getProcessor()
Get the database query processor instance.
Grammar
getGrammar()
Get the query grammar instance.
$this
useWritePdo()
Use the write pdo for query.
protected bool
isQueryable(mixed $value)
Determine if the value is a query builder instance or a Closure.
Builder
cloneWithout(array $properties)
Clone the query without the given properties.
Builder
cloneWithoutBindings(array $except)
Clone the query without the given bindings.
$this
dump()
Dump the current SQL and bindings.
void
dd()
Die and dump the current SQL and bindings.
$this
on(Closure|string $first, string|null $operator = null, Expression|string|null $second = null, string $boolean = 'and')
Add an "on" clause to the join.
On clauses can be chained, e.g.
$join->on('contacts.user_id', '=', 'users.id') ->on('contacts.info_id', '=', 'info.id')
will produce the following SQL:
on contacts
.user_id
= users
.id
and contacts
.info_id
= info
.id
JoinClause
orOn(Closure|string $first, string|null $operator = null, string|null $second = null)
Add an "or on" clause to the join.
protected Builder
newParentQuery()
Create a new parent query instance.