Properties

$middle

$middle : string

中间表表名

Type

string

$pivotName

$pivotName : string

中间表模型名称

Type

string

$pivot

$pivot : \think\model\Pivot

中间表模型对象

Type

Pivot

$pivotDataName

$pivotDataName : string

中间表数据名称

Type

string

$parent

$parent : \think\Model

父模型对象

Type

Model

$model

$model : string

当前关联的模型类名

Type

string

$query

$query : \think\db\BaseQuery

关联模型查询对象

Type

BaseQuery

$foreignKey

$foreignKey : string

关联表外键

Type

string

$localKey

$localKey : string

关联表主键

Type

string

$baseQuery

$baseQuery : bool

是否执行关联基础查询

Type

bool

$selfRelation

$selfRelation : bool

是否为自关联

Type

bool

$withLimit

$withLimit : int

关联数据数量限制

Type

int

$withField

$withField : array

关联数据字段限制

Type

array

$morphType

$morphType : string

多态字段名

Type

string

$morphClass

$morphClass : string

多态模型名

Type

string

$inverse

$inverse : bool

是否反向关联

Type

bool

Methods

__construct()

__construct(\think\Model  $parent, string  $model, string  $middle, string  $morphType, string  $morphKey, string  $localKey, bool  $inverse = false) : mixed

架构函数

Parameters

\think\Model $parent

上级模型对象

string $model

模型名

string $middle

中间表名/模型名

string $morphType

多态字段名

string $morphKey

关联外键

string $localKey

当前模型关联键

bool $inverse

反向关联

Returns

mixed —

pivot()

pivot( $pivot) : $this

设置中间表模型

Parameters

$pivot

Returns

$this —

name()

name(string  $name) : $this

设置中间表数据名称

Parameters

string $name

Returns

$this —

getRelation()

getRelation(array  $subRelation = [], \Closure  $closure = null) : \think\Collection

延迟获取关联数据

Parameters

array $subRelation

子关联名

\Closure $closure

闭包查询条件

Returns

\think\Collection —

select()

select(mixed  $data = null) : \think\Collection

重载select方法

Parameters

mixed $data

Returns

\think\Collection —

paginate()

paginate(int|array  $listRows = null, int|bool  $simple = false) : \think\Paginator

重载paginate方法

Parameters

int|array $listRows
int|bool $simple

Returns

\think\Paginator —

find()

find(mixed  $data = null) : \think\Model

重载find方法

Parameters

mixed $data

Returns

\think\Model —

has()

has(string  $operator = '>=', int  $count = 1, string  $id = '*', string  $joinType = 'INNER', \think\db\BaseQuery  $query = null) : \think\Model

根据关联条件查询当前模型

Parameters

string $operator

比较操作符

int $count

个数

string $id

关联表的统计字段

string $joinType

JOIN类型

\think\db\BaseQuery $query

Query对象

Returns

\think\Model —

hasWhere()

hasWhere(mixed  $where = [], mixed  $fields = null, string  $joinType = '', \think\db\BaseQuery  $query = null) : \think\db\BaseQuery

根据关联条件查询当前模型

Parameters

mixed $where

查询条件(数组或者闭包)

mixed $fields

字段

string $joinType

JOIN类型

\think\db\BaseQuery $query

Query对象

Throws

\think\db\exception\DbException

Returns

\think\db\BaseQuery —

wherePivot()

wherePivot(string  $field, string  $op = null, mixed  $condition = null) : $this

设置中间表的查询条件

Parameters

string $field
string $op
mixed $condition

Returns

$this —

eagerlyResultSet()

eagerlyResultSet(array  $resultSet, string  $relation, array  $subRelation, \Closure  $closure = null, array  $cache = []) : void

预载入关联查询(数据集)

Parameters

array $resultSet

数据集

string $relation

当前关联名

array $subRelation

子关联名

\Closure $closure

闭包

array $cache

关联缓存

eagerlyResult()

eagerlyResult(\think\Model  $result, string  $relation, array  $subRelation, \Closure  $closure = null, array  $cache = []) : void

预载入关联查询(单个数据)

Parameters

\think\Model $result

数据对象

string $relation

当前关联名

array $subRelation

子关联名

\Closure $closure

闭包

array $cache

关联缓存

relationCount()

relationCount(\think\Model  $result, \Closure  $closure = null, string  $aggregate = 'count', string  $field = '*', string  $name = null) : int

关联统计

Parameters

\think\Model $result

数据对象

\Closure $closure

闭包

string $aggregate

聚合查询方法

string $field

字段

string $name

统计字段别名

Returns

int —

getRelationCountQuery()

getRelationCountQuery(\Closure  $closure = null, string  $aggregate = 'count', string  $field = '*', string  $name = null) : string

获取关联统计子查询

Parameters

\Closure $closure

闭包

string $aggregate

聚合查询方法

string $field

字段

string $name

统计字段别名

Returns

string —

save()

save(mixed  $data, array  $pivot = []) : array|\think\model\Pivot

保存(新增)当前关联数据对象

Parameters

mixed $data

数据 可以使用数组 关联模型对象 和 关联对象的主键

array $pivot

中间表额外数据

Returns

array|\think\model\Pivot —

saveAll()

saveAll(iterable  $dataSet, array  $pivot = [], bool  $samePivot = false) : array|false

批量保存当前关联数据对象

Parameters

iterable $dataSet

数据集

array $pivot

中间表额外数据

bool $samePivot

额外数据是否相同

Returns

array|false —

attach()

attach(mixed  $data, array  $pivot = []) : array|\think\model\Pivot

附加关联的一个中间表数据

Parameters

mixed $data

数据 可以使用数组、关联模型对象 或者 关联对象的主键

array $pivot

中间表额外数据

Returns

array|\think\model\Pivot —

attached()

attached(mixed  $data) : \think\model\Pivot|false

判断是否存在关联数据

Parameters

mixed $data

数据 可以使用关联模型对象 或者 关联对象的主键

Returns

\think\model\Pivot|false —

detach()

detach(int|array  $data = null, bool  $relationDel = false) : int

解除关联的一个中间表数据

Parameters

int|array $data

数据 可以使用关联对象的主键

bool $relationDel

是否同时删除关联表数据

Returns

int —

sync()

sync(array  $ids, bool  $detaching = true) : array

数据同步

Parameters

array $ids
bool $detaching

Returns

array —

getParent()

getParent() : \think\Model

获取关联的所属模型

Returns

\think\Model —

getQuery()

getQuery() : \think\db\BaseQuery

获取当前的关联模型类的Query实例

Returns

\think\db\BaseQuery —

getModel()

getModel() : \think\Model

获取当前的关联模型类的实例

Returns

\think\Model —

isSelfRelation()

isSelfRelation() : bool

当前关联是否为自关联

Returns

bool —

update()

update(array  $data = []) : int

更新数据

Parameters

array $data

更新数据

Returns

int —

delete()

delete(mixed  $data = null) : int

删除记录

Parameters

mixed $data

表达式 true 表示强制删除

Throws

\think\db\exception\DbException
\think\model\PDOException

Returns

int —

withLimit()

withLimit(int  $limit) : $this

限制关联数据的数量

Parameters

int $limit

关联数量限制

Returns

$this —

withField()

withField(array  $field) : $this

限制关联数据的字段

Parameters

array $field

关联字段限制

Returns

$this —

__call()

__call(mixed  $method, mixed  $args) : mixed

Parameters

mixed $method
mixed $args

Returns

mixed —

newPivot()

newPivot( $data = []) : \think\model\Pivot

实例化中间表模型

Parameters

$data

Throws

\think\db\exception\DbException

Returns

\think\model\Pivot —

hydratePivot()

hydratePivot(array|\think\Collection|\think\Paginator  $models) : mixed

合成中间表模型

Parameters

array|\think\Collection|\think\Paginator $models

Returns

mixed —

eagerlyManyToMany()

eagerlyManyToMany(array  $where, array  $subRelation = [], \Closure  $closure = null, array  $cache = []) : array

多对多 关联模型预查询

Parameters

array $where

关联预查询条件

array $subRelation

子关联

\Closure $closure

闭包

array $cache

关联缓存

Returns

array —

belongsToManyQuery()

belongsToManyQuery(string  $foreignKey, string  $localKey, array  $condition = []) : \think\db\BaseQuery

BELONGS TO MANY 关联查询

Parameters

string $foreignKey

关联模型关联键

string $localKey

当前模型关联键

array $condition

关联查询条件

Returns

\think\db\BaseQuery —

baseQuery()

baseQuery() : void

执行基础查询(仅执行一次)

resultSetBuild()

resultSetBuild(array  $resultSet, \think\Model  $parent = null) : mixed

封装关联数据集

Parameters

array $resultSet

数据集

\think\Model $parent

父模型

Returns

mixed —

getQueryFields()

getQueryFields(string  $model) : mixed

Parameters

string $model

Returns

mixed —

getRelationQueryFields()

getRelationQueryFields(mixed  $fields, string  $model) : mixed

Parameters

mixed $fields
string $model

Returns

mixed —

getQueryWhere()

getQueryWhere(array  $where, string  $relation) : void

Parameters

array $where
string $relation

getClosureType()

getClosureType(\Closure  $closure) : mixed

判断闭包的参数类型

Parameters

\Closure $closure

Returns

mixed —