JoinClause
class JoinClause extends Builder (View source)
Traits
BuildsQueries | |
ExplainsQueries | |
ForwardsCalls | |
Macroable |
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 |
string[] | $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
bool | chunk(int $count, callable $callback) Chunk the results of the query. | from BuildsQueries |
bool | each(callable $callback, int $count = 1000) Execute a callback over each item while chunking. | from BuildsQueries |
bool | chunkById(int $count, callable $callback, string|null $column = null, string|null $alias = null) Chunk the results of a query by comparing IDs. | from BuildsQueries |
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. | from BuildsQueries |
Model|object|BuildsQueries|null | first(array|string $columns = ['*']) Execute the query and get the first result. | from BuildsQueries |
mixed|$this | when(mixed $value, callable $callback, callable|null $default = null) Apply the callback's query changes if the given "value" is true. | from BuildsQueries |
$this | tap(callable $callback) Pass the query to a given callback. | from BuildsQueries |
mixed|$this | unless(mixed $value, callable $callback, callable|null $default = null) Apply the callback's query changes if the given "value" is false. | from BuildsQueries |
LengthAwarePaginator | paginator(Collection $items, int $total, int $perPage, int $currentPage, array $options) Create a new length-aware paginator instance. | from BuildsQueries |
Paginator | simplePaginator(Collection $items, int $perPage, int $currentPage, array $options) Create a new simple paginator instance. | from BuildsQueries |
Collection | explain() Explains the query. | from ExplainsQueries |
mixed | forwardCallTo(mixed $object, string $method, array $parameters) Forward a method call to the given object. | from ForwardsCalls |
static void | throwBadMethodCallException(string $method) Throw a bad method call exception for the given method. | from ForwardsCalls |
static void | macro(string $name, object|callable $macro) Register a custom macro. | from Macroable |
static void | mixin(object $mixin, bool $replace = true) Mix another object into the class. | from Macroable |
static bool | hasMacro(string $name) Checks if macro is registered. | from Macroable |
static mixed | __callStatic(string $method, array $parameters) Dynamically handle calls to the class. | from Macroable |
mixed | __call(string $method, array $parameters) Dynamically handle calls to the class. | from Macroable |
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. | from Builder |
$this | selectSub(Closure|Builder|string $query, string $as) Add a subselect expression to the query. | from Builder |
$this | selectRaw(string $expression, array $bindings = []) Add a new "raw" select expression to the query. | from Builder |
$this | fromSub(Closure|Builder|string $query, string $as) Makes "from" fetch from a subquery. | from Builder |
$this | fromRaw(string $expression, mixed $bindings = []) Add a raw from clause to the query. | from Builder |
array | createSub(Closure|Builder|string $query) Creates a subquery and parse it. | from Builder |
array | parseSub(mixed $query) Parse the subquery into SQL and bindings. | from Builder |
mixed | prependDatabaseNameIfCrossDatabaseQuery(mixed $query) Prepend the database name if the given query is on another database. | from Builder |
$this | addSelect(array|mixed $column) Add a new select column to the query. | from Builder |
$this | distinct() Force the query to only return distinct results. | from Builder |
$this | from(Closure|Builder|string $table, string|null $as = null) Set the table which the query is targeting. | from Builder |
$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. | from Builder |
$this | joinWhere(string $table, Closure|string $first, string $operator, string $second, string $type = 'inner') Add a "join where" clause to the query. | from Builder |
$this | 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. | from Builder |
$this | leftJoin(string $table, Closure|string $first, string|null $operator = null, string|null $second = null) Add a left join to the query. | from Builder |
$this | leftJoinWhere(string $table, Closure|string $first, string $operator, string $second) Add a "join where" clause to the query. | from Builder |
$this | 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. | from Builder |
$this | rightJoin(string $table, Closure|string $first, string|null $operator = null, string|null $second = null) Add a right join to the query. | from Builder |
$this | rightJoinWhere(string $table, Closure|string $first, string $operator, string $second) Add a "right join where" clause to the query. | from Builder |
$this | 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. | from Builder |
$this | crossJoin(string $table, Closure|string|null $first = null, string|null $operator = null, string|null $second = null) Add a "cross join" clause to the query. | from Builder |
$this | crossJoinSub(Closure|Builder|string $query, string $as) Add a subquery cross join to the query. | from Builder |
JoinClause | newJoinClause(Builder $parentQuery, string $type, string $table) Get a new join clause. | from Builder |
void | mergeWheres(array $wheres, array $bindings) Merge an array of where clauses and bindings. | from Builder |
$this | where(Closure|string|array $column, mixed $operator = null, mixed $value = null, string $boolean = 'and') Add a basic where clause to the query. | from Builder |
$this | addArrayOfWheres(array $column, string $boolean, string $method = 'where') Add an array of where clauses to the query. | from Builder |
array | prepareValueAndOperator(string $value, string $operator, bool $useDefault = false) Prepare the value and operator for a where clause. | from Builder |
bool | invalidOperatorAndValue(string $operator, mixed $value) Determine if the given operator and value combination is legal. | from Builder |
bool | invalidOperator(string $operator) Determine if the given operator is supported. | from Builder |
$this | orWhere(Closure|string|array $column, mixed $operator = null, mixed $value = null) Add an "or where" clause to the query. | from Builder |
$this | 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. | from Builder |
$this | orWhereColumn(string|array $first, string|null $operator = null, string|null $second = null) Add an "or where" clause comparing two columns to the query. | from Builder |
$this | whereRaw(string $sql, mixed $bindings = [], string $boolean = 'and') Add a raw where clause to the query. | from Builder |
$this | orWhereRaw(string $sql, mixed $bindings = []) Add a raw or where clause to the query. | from Builder |
$this | whereIn(string $column, mixed $values, string $boolean = 'and', bool $not = false) Add a "where in" clause to the query. | from Builder |
$this | orWhereIn(string $column, mixed $values) Add an "or where in" clause to the query. | from Builder |
$this | whereNotIn(string $column, mixed $values, string $boolean = 'and') Add a "where not in" clause to the query. | from Builder |
$this | orWhereNotIn(string $column, mixed $values) Add an "or where not in" clause to the query. | from Builder |
$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. | from Builder |
$this | orWhereIntegerInRaw(string $column, Arrayable|array $values) Add an "or where in raw" clause for integer values to the query. | from Builder |
$this | whereIntegerNotInRaw(string $column, Arrayable|array $values, string $boolean = 'and') Add a "where not in raw" clause for integer values to the query. | from Builder |
$this | orWhereIntegerNotInRaw(string $column, Arrayable|array $values) Add an "or where not in raw" clause for integer values to the query. | from Builder |
$this | whereNull(string|array $columns, string $boolean = 'and', bool $not = false) Add a "where null" clause to the query. | from Builder |
$this | orWhereNull(string $column) Add an "or where null" clause to the query. | from Builder |
$this | whereNotNull(string|array $columns, string $boolean = 'and') Add a "where not null" clause to the query. | from Builder |
$this | whereBetween(string|Expression $column, array $values, string $boolean = 'and', bool $not = false) Add a where between statement to the query. | from Builder |
$this | whereBetweenColumns(string $column, array $values, string $boolean = 'and', bool $not = false) Add a where between statement using columns to the query. | from Builder |
$this | orWhereBetween(string $column, array $values) Add an or where between statement to the query. | from Builder |
$this | orWhereBetweenColumns(string $column, array $values) Add an or where between statement using columns to the query. | from Builder |
$this | whereNotBetween(string $column, array $values, string $boolean = 'and') Add a where not between statement to the query. | from Builder |
$this | whereNotBetweenColumns(string $column, array $values, string $boolean = 'and') Add a where not between statement using columns to the query. | from Builder |
$this | orWhereNotBetween(string $column, array $values) Add an or where not between statement to the query. | from Builder |
$this | orWhereNotBetweenColumns(string $column, array $values) Add an or where not between statement using columns to the query. | from Builder |
$this | orWhereNotNull(string $column) Add an "or where not null" clause to the query. | from Builder |
$this | whereDate(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and') Add a "where date" statement to the query. | from Builder |
$this | orWhereDate(string $column, string $operator, DateTimeInterface|string|null $value = null) Add an "or where date" statement to the query. | from Builder |
$this | whereTime(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and') Add a "where time" statement to the query. | from Builder |
$this | orWhereTime(string $column, string $operator, DateTimeInterface|string|null $value = null) Add an "or where time" statement to the query. | from Builder |
$this | whereDay(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and') Add a "where day" statement to the query. | from Builder |
$this | orWhereDay(string $column, string $operator, DateTimeInterface|string|null $value = null) Add an "or where day" statement to the query. | from Builder |
$this | whereMonth(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and') Add a "where month" statement to the query. | from Builder |
$this | orWhereMonth(string $column, string $operator, DateTimeInterface|string|null $value = null) Add an "or where month" statement to the query. | from Builder |
$this | whereYear(string $column, string $operator, DateTimeInterface|string|int|null $value = null, string $boolean = 'and') Add a "where year" statement to the query. | from Builder |
$this | orWhereYear(string $column, string $operator, DateTimeInterface|string|int|null $value = null) Add an "or where year" statement to the query. | from Builder |
$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. | from Builder |
$this | whereNested(Closure $callback, string $boolean = 'and') Add a nested where statement to the query. | from Builder |
Builder | forNestedWhere() Create a new query instance for nested where condition. | from Builder |
$this | addNestedWhereQuery(Builder $query, string $boolean = 'and') Add another query builder as a nested where to the query builder. | from Builder |
$this | whereSub(string $column, string $operator, Closure $callback, string $boolean) Add a full sub-select to the query. | from Builder |
$this | whereExists(Closure $callback, string $boolean = 'and', bool $not = false) Add an exists clause to the query. | from Builder |
$this | orWhereExists(Closure $callback, bool $not = false) Add an or exists clause to the query. | from Builder |
$this | whereNotExists(Closure $callback, string $boolean = 'and') Add a where not exists clause to the query. | from Builder |
$this | orWhereNotExists(Closure $callback) Add a where not exists clause to the query. | from Builder |
$this | addWhereExistsQuery(Builder $query, string $boolean = 'and', bool $not = false) Add an exists clause to the query. | from Builder |
$this | whereRowValues(array $columns, string $operator, array $values, string $boolean = 'and') Adds a where condition using row values. | from Builder |
$this | orWhereRowValues(array $columns, string $operator, array $values) Adds an or where condition using row values. | from Builder |
$this | whereJsonContains(string $column, mixed $value, string $boolean = 'and', bool $not = false) Add a "where JSON contains" clause to the query. | from Builder |
$this | orWhereJsonContains(string $column, mixed $value) Add an "or where JSON contains" clause to the query. | from Builder |
$this | whereJsonDoesntContain(string $column, mixed $value, string $boolean = 'and') Add a "where JSON not contains" clause to the query. | from Builder |
$this | orWhereJsonDoesntContain(string $column, mixed $value) Add an "or where JSON not contains" clause to the query. | from Builder |
$this | whereJsonLength(string $column, mixed $operator, mixed $value = null, string $boolean = 'and') Add a "where JSON length" clause to the query. | from Builder |
$this | orWhereJsonLength(string $column, mixed $operator, mixed $value = null) Add an "or where JSON length" clause to the query. | from Builder |
$this | dynamicWhere(string $method, array $parameters) Handles dynamic "where" clauses to the query. | from Builder |
void | addDynamic(string $segment, string $connector, array $parameters, int $index) Add a single dynamic where clause statement to the query. | from Builder |
$this | groupBy(array|string ...$groups) Add a "group by" clause to the query. | from Builder |
$this | groupByRaw(string $sql, array $bindings = []) Add a raw groupBy clause to the query. | from Builder |
$this | having(string $column, string|null $operator = null, string|null $value = null, string $boolean = 'and') Add a "having" clause to the query. | from Builder |
$this | orHaving(string $column, string|null $operator = null, string|null $value = null) Add an "or having" clause to the query. | from Builder |
$this | havingBetween(string $column, array $values, string $boolean = 'and', bool $not = false) Add a "having between " clause to the query. | from Builder |
$this | havingRaw(string $sql, array $bindings = [], string $boolean = 'and') Add a raw having clause to the query. | from Builder |
$this | orHavingRaw(string $sql, array $bindings = []) Add a raw or having clause to the query. | from Builder |
$this | orderBy(Closure|Builder|Expression|string $column, string $direction = 'asc') Add an "order by" clause to the query. | from Builder |
$this | orderByDesc(string $column) Add a descending "order by" clause to the query. | from Builder |
$this | latest(string $column = 'created_at') Add an "order by" clause for a timestamp to the query. | from Builder |
$this | oldest(string $column = 'created_at') Add an "order by" clause for a timestamp to the query. | from Builder |
$this | inRandomOrder(string $seed = '') Put the query's results in random order. | from Builder |
$this | orderByRaw(string $sql, array $bindings = []) Add a raw "order by" clause to the query. | from Builder |
$this | skip(int $value) Alias to set the "offset" value of the query. | from Builder |
$this | offset(int $value) Set the "offset" value of the query. | from Builder |
$this | take(int $value) Alias to set the "limit" value of the query. | from Builder |
$this | limit(int $value) Set the "limit" value of the query. | from Builder |
$this | forPage(int $page, int $perPage = 15) Set the limit and offset for a given page. | from Builder |
$this | forPageBeforeId(int $perPage = 15, int|null $lastId = 0, string $column = 'id') Constrain the query to the previous "page" of results before a given ID. | from Builder |
$this | forPageAfterId(int $perPage = 15, int|null $lastId = 0, string $column = 'id') Constrain the query to the next "page" of results after a given ID. | from Builder |
$this | reorder(string|null $column = null, string $direction = 'asc') Remove all existing orders and optionally add a new order. | from Builder |
array | removeExistingOrdersFor(string $column) Get an array with all orders with a given column removed. | from Builder |
$this | union(Builder|Closure $query, bool $all = false) Add a union statement to the query. | from Builder |
$this | unionAll(Builder|Closure $query) Add a union all statement to the query. | from Builder |
$this | lock(string|bool $value = true) Lock the selected rows in the table. | from Builder |
Builder | lockForUpdate() Lock the selected rows in the table for updating. | from Builder |
Builder | sharedLock() Share lock the selected rows in the table. | from Builder |
string | toSql() Get the SQL representation of the query. | from Builder |
mixed|Builder | find(int|string $id, array $columns = ['*']) Execute a query for a single record by ID. | from Builder |
mixed | value(string $column) Get a single column's value from the first result of a query. | from Builder |
Collection | get(array|string $columns = ['*']) Execute the query as a "select" statement. | from Builder |
array | runSelect() Run the query as a "select" statement against the connection. | from Builder |
LengthAwarePaginator | paginate(int $perPage = 15, array $columns = ['*'], string $pageName = 'page', int|null $page = null) Paginate the given query into a simple paginator. | from Builder |
Paginator | simplePaginate(int $perPage = 15, array $columns = ['*'], string $pageName = 'page', int|null $page = null) Get a paginator only supporting simple next and previous links. | from Builder |
int | getCountForPagination(array $columns = ['*']) Get the count of the total records for the paginator. | from Builder |
array | runPaginationCountQuery(array $columns = ['*']) Run a pagination count query. | from Builder |
Builder | cloneForPaginationCount() Clone the existing query instance for usage in a pagination subquery. | from Builder |
array | withoutSelectAliases(array $columns) Remove the column aliases since they will break count queries. | from Builder |
LazyCollection | cursor() Get a lazy collection for the given query. | from Builder |
void | enforceOrderBy() Throw an exception if the query doesn't have an orderBy clause. | from Builder |
Collection | pluck(string $column, string|null $key = null) Get an array with the values of a given column. | from Builder |
string|null | stripTableForPluck(string $column) Strip off the table name or alias from a column identifier. | from Builder |
Collection | pluckFromObjectColumn(array $queryResult, string $column, string $key) Retrieve column values from rows represented as objects. | from Builder |
Collection | pluckFromArrayColumn(array $queryResult, string $column, string $key) Retrieve column values from rows represented as arrays. | from Builder |
string | implode(string $column, string $glue = '') Concatenate values of a given column as a string. | from Builder |
bool | exists() Determine if any rows exist for the current query. | from Builder |
bool | doesntExist() Determine if no rows exist for the current query. | from Builder |
mixed | existsOr(Closure $callback) Execute the given callback if no rows exist for the current query. | from Builder |
mixed | doesntExistOr(Closure $callback) Execute the given callback if rows exist for the current query. | from Builder |
int | count(string $columns = '*') Retrieve the "count" result of the query. | from Builder |
mixed | min(string $column) Retrieve the minimum value of a given column. | from Builder |
mixed | max(string $column) Retrieve the maximum value of a given column. | from Builder |
mixed | sum(string $column) Retrieve the sum of the values of a given column. | from Builder |
mixed | avg(string $column) Retrieve the average of the values of a given column. | from Builder |
mixed | average(string $column) Alias for the "avg" method. | from Builder |
mixed | aggregate(string $function, array $columns = ['*']) Execute an aggregate function on the database. | from Builder |
float|int | numericAggregate(string $function, array $columns = ['*']) Execute a numeric aggregate function on the database. | from Builder |
$this | setAggregate(string $function, array $columns) Set the aggregate property without running the query. | from Builder |
mixed | onceWithColumns(array $columns, callable $callback) Execute the given callback while selecting the given columns. | from Builder |
bool | insert(array $values) Insert new records into the database. | from Builder |
int | insertOrIgnore(array $values) Insert new records into the database while ignoring errors. | from Builder |
int | insertGetId(array $values, string|null $sequence = null) Insert a new record and get the value of the primary key. | from Builder |
int | insertUsing(array $columns, Closure|Builder|string $query) Insert new records into the table using a subquery. | from Builder |
int | update(array $values) Update records in the database. | from Builder |
bool | updateOrInsert(array $attributes, array $values = []) Insert or update a record matching the attributes, and fill it with values. | from Builder |
int | upsert(array $values, array|string $uniqueBy, array|null $update = null) Insert new records or update the existing ones. | from Builder |
int | increment(string $column, float|int $amount = 1, array $extra = []) Increment a column's value by a given amount. | from Builder |
int | decrement(string $column, float|int $amount = 1, array $extra = []) Decrement a column's value by a given amount. | from Builder |
int | delete(mixed $id = null) Delete records from the database. | from Builder |
void | truncate() Run a truncate statement on the table. | from Builder |
Builder | newQuery() Get a new instance of the join clause builder. | |
Builder | forSubQuery() Create a new query instance for sub-query. | |
Expression | raw(mixed $value) Create a raw database expression. | from Builder |
array | getBindings() Get the current query value bindings in a flattened array. | from Builder |
array | getRawBindings() Get the raw array of bindings. | from Builder |
$this | setBindings(array $bindings, string $type = 'where') Set the bindings on the query builder. | from Builder |
$this | addBinding(mixed $value, string $type = 'where') Add a binding to the query. | from Builder |
$this | mergeBindings(Builder $query) Merge an array of bindings into our bindings. | from Builder |
array | cleanBindings(array $bindings) Remove all of the expressions from a list of bindings. | from Builder |
string | defaultKeyName() Get the default key name of the table. | from Builder |
ConnectionInterface | getConnection() Get the database connection instance. | from Builder |
Processor | getProcessor() Get the database query processor instance. | from Builder |
Grammar | getGrammar() Get the query grammar instance. | from Builder |
$this | useWritePdo() Use the write pdo for query. | from Builder |
bool | isQueryable(mixed $value) Determine if the value is a query builder instance or a Closure. | from Builder |
Builder | clone() Clone the query. | from Builder |
Builder | cloneWithout(array $properties) Clone the query without the given properties. | from Builder |
Builder | cloneWithoutBindings(array $except) Clone the query without the given bindings. | from Builder |
$this | dump() Dump the current SQL and bindings. | from Builder |
void | dd() Die and dump the current SQL and bindings. | from Builder |
$this | on(Closure|string $first, string|null $operator = null, Expression|string|null $second = null, string $boolean = 'and') Add an "on" clause to the join. | |
JoinClause | orOn(Closure|string $first, string|null $operator = null, string|null $second = null) Add an "or on" clause to the join. | |
Builder | newParentQuery() 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.
Collection explain()
Explains the query.
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.
$this selectRaw(string $expression, array $bindings = [])
Add a new "raw" select expression to the query.
$this 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.
protected mixed prependDatabaseNameIfCrossDatabaseQuery(mixed $query)
Prepend the database name if the given query is on another database.
$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.
$this joinWhere(string $table, Closure|string $first, string $operator, string $second, string $type = 'inner')
Add a "join where" clause to the query.
$this 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.
$this leftJoin(string $table, Closure|string $first, string|null $operator = null, string|null $second = null)
Add a left join to the query.
$this leftJoinWhere(string $table, Closure|string $first, string $operator, string $second)
Add a "join where" clause to the query.
$this 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.
$this rightJoin(string $table, Closure|string $first, string|null $operator = null, string|null $second = null)
Add a right join to the query.
$this rightJoinWhere(string $table, Closure|string $first, string $operator, string $second)
Add a "right join where" clause to the query.
$this 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.
$this crossJoin(string $table, Closure|string|null $first = null, string|null $operator = null, string|null $second = null)
Add a "cross join" clause to the query.
$this crossJoinSub(Closure|Builder|string $query, string $as)
Add a subquery cross join 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.
$this orWhere(Closure|string|array $column, mixed $operator = null, mixed $value = null)
Add an "or where" clause to the query.
$this 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.
$this 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.
$this 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.
$this orWhereIn(string $column, mixed $values)
Add an "or where in" clause to the query.
$this whereNotIn(string $column, mixed $values, string $boolean = 'and')
Add a "where not in" clause to the query.
$this 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 orWhereIntegerInRaw(string $column, Arrayable|array $values)
Add an "or 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 orWhereIntegerNotInRaw(string $column, Arrayable|array $values)
Add an "or 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.
$this orWhereNull(string $column)
Add an "or where null" clause to the query.
$this whereNotNull(string|array $columns, string $boolean = 'and')
Add a "where not null" clause to the query.
$this whereBetween(string|Expression $column, array $values, string $boolean = 'and', bool $not = false)
Add a where between statement to the query.
$this whereBetweenColumns(string $column, array $values, string $boolean = 'and', bool $not = false)
Add a where between statement using columns to the query.
$this orWhereBetween(string $column, array $values)
Add an or where between statement to the query.
$this orWhereBetweenColumns(string $column, array $values)
Add an or where between statement using columns to the query.
$this whereNotBetween(string $column, array $values, string $boolean = 'and')
Add a where not between statement to the query.
$this whereNotBetweenColumns(string $column, array $values, string $boolean = 'and')
Add a where not between statement using columns to the query.
$this orWhereNotBetween(string $column, array $values)
Add an or where not between statement to the query.
$this orWhereNotBetweenColumns(string $column, array $values)
Add an or where not between statement using columns to the query.
$this orWhereNotNull(string $column)
Add an "or where not null" clause to the query.
$this whereDate(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and')
Add a "where date" statement to the query.
$this orWhereDate(string $column, string $operator, DateTimeInterface|string|null $value = null)
Add an "or where date" statement to the query.
$this whereTime(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and')
Add a "where time" statement to the query.
$this orWhereTime(string $column, string $operator, DateTimeInterface|string|null $value = null)
Add an "or where time" statement to the query.
$this whereDay(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and')
Add a "where day" statement to the query.
$this orWhereDay(string $column, string $operator, DateTimeInterface|string|null $value = null)
Add an "or where day" statement to the query.
$this whereMonth(string $column, string $operator, DateTimeInterface|string|null $value = null, string $boolean = 'and')
Add a "where month" statement to the query.
$this orWhereMonth(string $column, string $operator, DateTimeInterface|string|null $value = null)
Add an "or where month" statement to the query.
$this whereYear(string $column, string $operator, DateTimeInterface|string|int|null $value = null, string $boolean = 'and')
Add a "where year" statement to the query.
$this 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.
$this 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 $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.
$this orWhereExists(Closure $callback, bool $not = false)
Add an or exists clause to the query.
$this whereNotExists(Closure $callback, string $boolean = 'and')
Add a where not exists clause to the query.
$this orWhereNotExists(Closure $callback)
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 an 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 an "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 an "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 an "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.
$this orHaving(string $column, string|null $operator = null, string|null $value = null)
Add an "or having" clause to the query.
$this 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.
$this 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.
$this latest(string $column = 'created_at')
Add an "order by" clause for a timestamp to the query.
$this 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 skip(int $value)
Alias to set the "offset" value of the query.
$this offset(int $value)
Set the "offset" value of the query.
$this take(int $value)
Alias to set the "limit" value of the query.
$this limit(int $value)
Set the "limit" value of the query.
$this forPage(int $page, int $perPage = 15)
Set the limit and offset for a given page.
$this forPageBeforeId(int $perPage = 15, int|null $lastId = 0, string $column = 'id')
Constrain the query to the previous "page" of results before a given ID.
$this forPageAfterId(int $perPage = 15, int|null $lastId = 0, string $column = 'id')
Constrain the query to the next "page" of results after a given ID.
$this reorder(string|null $column = null, string $direction = 'asc')
Remove all existing orders and optionally add a new order.
protected array removeExistingOrdersFor(string $column)
Get an array with all orders with a given column removed.
$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 Builder cloneForPaginationCount()
Clone the existing query instance for usage in a pagination subquery.
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 new records into the database.
int insertOrIgnore(array $values)
Insert new records 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 records in the database.
bool updateOrInsert(array $attributes, array $values = [])
Insert or update a record matching the attributes, and fill it with values.
int upsert(array $values, array|string $uniqueBy, array|null $update = null)
Insert new records or update the existing ones.
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 records 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.
array cleanBindings(array $bindings)
Remove all of the expressions from a list of bindings.
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 clone()
Clone the query.
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.
© Taylor Otwell
Licensed under the MIT License.
Laravel is a trademark of Taylor Otwell.
https://laravel.com/api/8.x/Illuminate/Database/Query/JoinClause.html