# Join Methods
# joinRelated()
queryBuilder = queryBuilder.joinRelated(relationExpression, opt);
Joins a set of relations described by relationExpression
. See the examples for more info.
# Arguments
Argument | Type | Description |
---|---|---|
relationExpression | RelationExpression | An expression describing which relations to join. |
opt | object | Optional options. See the examples. |
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# Examples
Join one relation:
await Person.query()
.joinRelated('pets')
.where('pets.species', 'dog');
Give an alias for a single relation:
await Person.query()
.joinRelated('pets', { alias: 'p' })
.where('p.species', 'dog');
Join two relations:
await Person.query()
.joinRelated('[pets, parent]')
.where('pets.species', 'dog')
.where('parent.name', 'Arnold');
You can also use the object notation
await Person.query()
.joinRelated({
pets: true,
parent: true
})
.where('pets.species', 'dog')
.where('parent.name', 'Arnold');
Join multiple nested relations. Note that when referring to nested relations :
must be used as a separator instead of .
. This limitation comes from the way knex parses table references.
await Person.query()
.select('persons.id', 'parent:parent.name as grandParentName')
.joinRelated('[pets, parent.[pets, parent]]')
.where('parent:pets.species', 'dog');
Give aliases for a bunch of relations:
await Person.query()
.select('persons.id', 'pr:pr.name as grandParentName')
.joinRelated('[pets, parent.[pets, parent]]', {
aliases: {
parent: 'pr',
pets: 'pt'
}
})
.where('pr:pt.species', 'dog');
You can also give aliases using the relation expression:
await Person.query()
.select('persons.id', 'pr:pr.name as grandParentName')
.joinRelated('[pets as pt, parent as pr.[pets as pt, parent as pr]]')
.where('pr:pt.species', 'dog');
# innerJoinRelated()
Alias for joinRelated.
# outerJoinRelated()
Outer join version of the joinRelated method.
# leftJoinRelated()
Left join version of the joinRelated method.
# leftOuterJoinRelated()
Left outer join version of the joinRelated method.
# rightJoinRelated()
Right join version of the joinRelated method.
# rightOuterJoinRelated()
Left outer join version of the joinRelated method.
# fullOuterJoinRelated()
Full outer join version of the joinRelated method.
# join()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# joinRaw()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# innerJoin()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# leftJoin()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# leftOuterJoin()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# rightJoin()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# rightOuterJoin()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# outerJoin()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# fullOuterJoin()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |
# crossJoin()
See knex documentation (opens new window)
# Return value
Type | Description |
---|---|
QueryBuilder | this query builder for chaining. |