{{wikiTitle}}
Model
复制链接
编辑文档
模型
-
定义
数据库中每一张表对应一个model,model继承
app\common\model\BaseModel,BaseModel 继承think/model类
模型类名最好与数据表保持一直,或者相关有意义,比如表eb_user,模型名为User
定义表主键
public static function tablePk(): string
定义表名
public static function tableName(): string
查询隐藏字段
protected $hidden = [ 'add_ip', 'account', 'clean_time', 'last_ip', 'pwd'];
自动写入字段
protected $insert = ['add_time', 'add_ip', 'last_time', 'last_ip'];
修改器(配置自动写入使用)
protected function setAddTimeAttr()
{
return time();
}
protected function setAddIpAttr($value)
{
return app('request')->ip();
}
获取器
public function getAddTimeAttr($value)
{
if(!empty($value)){
return date('Y-m-d H:i:s', (int)$value);
}
return '';
}
一对一关联
//关联分组
public function group()
{
return $this->hasOne(UserGroup::class,'id','group_id');
}
一对多关联
//关联标签
public function label()
{
return $this->hasMany(UserLabelRelation::class,'uid','uid');
}
搜索器
常用的搜索条件,创建模型类时请先定义好
public function searchLikeAttr($query, $value)
{
$query->where('account|nickname|phone|real_name|uid', 'LIKE', "%$value%");
}
-
使用
User模型类只通过UserDao使用,模型不在其他模型中混用,或者其他Dao中使用
dao和model一一对应,也只在对应的dao中使用 在dao中通过
setModel关联modelclass UserDao extends BaseDao { protected function getModel(): string { return User::class; } }通过getModel获取model实例
$this->getModel()就可以配合关联词
where、field、page、count、find、select等return $this->getModel()->where([])->field('*')->with(['label'])->page(0, 10)->select()->toArray();使用
$this->getSearch(),传入条件可以配合模型中创建的搜索器一起使用,是查询条件更简介
评论({{cateWiki.comment_num}})
最新
最早
{{cateWiki.page_view_num}}人看过该文档
评论(0)
最新
最早
606人看过
登录/注册
即可发表评论
{{item.user ? item.user.nickname : ''}}
(自评)
{{item.content}}
搜索结果
为您找到{{wikiCount}}条结果
{{item.page_view_num}}
{{item.like ? item.like.like_num : 0}}
{{item.comment ? item.comment.comment_num : 0}}
位置:
{{path.name}}
{{(i+1) == getCataloguePathData(item.catalogue).length ? '':'/'}}
