Properties

$parent

$parent : 

Type

$model

$model : \think\Model

Type

\think\Model — 当前关联的模型类

$query

$query : \think\db\Query

Type

\think\db\Query — 关联模型查询对象

$foreignKey

$foreignKey : 

Type

$localKey

$localKey : 

Type

$baseQuery

$baseQuery : 

Type

$selfRelation

$selfRelation : 

Type

$middle

$middle : 

Type

$pivotName

$pivotName : 

Type

$pivotDataName

$pivotDataName : 

Type

$pivot

$pivot : 

Type

Methods

getParent()

getParent() : \think\Model

获取关联的所属模型

Returns

\think\Model

getModel()

getModel() : \think\Model

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

Returns

\think\Model

selfRelation()

selfRelation(boolean  $self = true) : $this

设置当前关联为自关联

Parameters

boolean $self

是否自关联

Returns

$this

isSelfRelation()

isSelfRelation() : boolean

当前关联是否为自关联

Returns

boolean

delete()

delete(mixed  $data = null) : integer

删除记录

Parameters

mixed $data

表达式 true 表示强制删除

Throws

\think\Exception
\think\model\PDOException

Returns

integer

__call()

__call(  $method,   $args) 

Parameters

$method
$args

__construct()

__construct(\think\Model  $parent, string  $model, string  $table, string  $foreignKey, string  $localKey) 

架构函数

Parameters

\think\Model $parent

上级模型对象

string $model

模型名

string $table

中间表名

string $foreignKey

关联模型外键

string $localKey

当前模型关联键

pivot()

pivot(  $pivot) : $this

设置中间表模型

Parameters

$pivot

Returns

$this

pivotDataName()

pivotDataName(string  $name) : $this

设置中间表数据名称

Parameters

string $name

Returns

$this

getRelation()

getRelation(string  $subRelation = '', \Closure  $closure = null) : \think\Collection

延迟获取关联数据

Parameters

string $subRelation

子关联名

\Closure $closure

闭包查询条件

Returns

\think\Collection

select()

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

重载select方法

Parameters

mixed $data

Returns

\think\Collection

paginate()

paginate(null  $listRows = null, boolean  $simple = false, array  $config = array()) : \think\model\relation\Paginator

重载paginate方法

Parameters

null $listRows
boolean $simple
array $config

Returns

\think\model\relation\Paginator

find()

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

重载find方法

Parameters

mixed $data

Returns

\think\Model

selectOrFail()

selectOrFail(array|string|\think\db\Query|\Closure  $data = null) : \think\Collection

查找多条记录 如果不存在则抛出异常

Parameters

array|string|\think\db\Query|\Closure $data

Returns

\think\Collection

findOrFail()

findOrFail(array|string|\think\db\Query|\Closure  $data = null) : \think\Model

查找单条记录 如果不存在则抛出异常

Parameters

array|string|\think\db\Query|\Closure $data

Returns

\think\Model

has()

has(string  $operator = '>=', integer  $count = 1, string  $id = '*', string  $joinType = 'INNER') : \think\db\Query

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

Parameters

string $operator

比较操作符

integer $count

个数

string $id

关联表的统计字段

string $joinType

JOIN类型

Returns

\think\db\Query

hasWhere()

hasWhere(mixed  $where = array(), mixed  $fields = null) : \think\db\Query

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

Parameters

mixed $where

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

mixed $fields

字段

Throws

\think\Exception

Returns

\think\db\Query

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, string  $subRelation, \Closure  $closure) : void

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

Parameters

array $resultSet

数据集

string $relation

当前关联名

string $subRelation

子关联名

\Closure $closure

闭包

eagerlyResult()

eagerlyResult(\think\Model  $result, string  $relation, string  $subRelation, \Closure  $closure) : void

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

Parameters

\think\Model $result

数据对象

string $relation

当前关联名

string $subRelation

子关联名

\Closure $closure

闭包

relationCount()

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

关联统计

Parameters

\think\Model $result

数据对象

\Closure $closure

闭包

string $aggregate

聚合查询方法

string $field

字段

string $name

统计字段别名

Returns

integer

getRelationCountQuery()

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

获取关联统计子查询

Parameters

\Closure $closure

闭包

string $aggregate

聚合查询方法

string $field

字段

string $aggregateAlias

聚合字段别名

Returns

array

save()

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

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

Parameters

mixed $data

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

array $pivot

中间表额外数据

Returns

array|\think\model\Pivot

saveAll()

saveAll(array  $dataSet, array  $pivot = array(), boolean  $samePivot = false) : array|false

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

Parameters

array $dataSet

数据集

array $pivot

中间表额外数据

boolean $samePivot

额外数据是否相同

Returns

array|false

attach()

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

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

Parameters

mixed $data

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

array $pivot

中间表额外数据

Throws

\think\Exception

Returns

array|\think\model\Pivot

attached()

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

判断是否存在关联数据

Parameters

mixed $data

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

Throws

\think\Exception

Returns

\think\model\Pivot

detach()

detach(integer|array  $data = null, boolean  $relationDel = false) : integer

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

Parameters

integer|array $data

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

boolean $relationDel

是否同时删除关联表数据

Returns

integer

sync()

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

数据同步

Parameters

array $ids
boolean $detaching

Returns

array

resultSetBuild()

resultSetBuild(array  $resultSet) : mixed

封装关联数据集

Parameters

array $resultSet

数据集

Returns

mixed

getQueryFields()

getQueryFields(  $model) 

Parameters

$model

getRelationQueryFields()

getRelationQueryFields(  $fields,   $model) 

Parameters

$fields
$model

getQueryWhere()

getQueryWhere(  $where,   $relation) 

Parameters

$where
$relation

baseQuery()

baseQuery() : void

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

getUpdateWhere()

getUpdateWhere(  $data) : array

获取中间表更新条件

Parameters

$data

Returns

array

newPivot()

newPivot(array  $data = array(), boolean  $isUpdate = false) : \think\model\Pivot

实例化中间表模型

Parameters

array $data
boolean $isUpdate

Throws

\think\Exception

Returns

\think\model\Pivot

hydratePivot()

hydratePivot(array|\think\Collection|\think\model\relation\Paginator  $models) 

合成中间表模型

Parameters

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

buildQuery()

buildQuery() : \think\db\Query

创建关联查询Query对象

Returns

\think\db\Query

eagerlyManyToMany()

eagerlyManyToMany(array  $where, string  $relation, string  $subRelation = '', \Closure  $closure = null) : array

多对多 关联模型预查询

Parameters

array $where

关联预查询条件

string $relation

关联名

string $subRelation

子关联

\Closure $closure

闭包

Returns

array

belongsToManyQuery()

belongsToManyQuery(string  $foreignKey, string  $localKey, array  $condition = array()) : \think\db\Query

BELONGS TO MANY 关联查询

Parameters

string $foreignKey

关联模型关联键

string $localKey

当前模型关联键

array $condition

关联查询条件

Returns

\think\db\Query