-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Model
liaofei edited this page Jan 20, 2021
·
1 revision
数据库中每一张表对应一个model,model继承
\crmeb\basic\BaseModel
,BaseModel 继承think/model类
模型类名最好与数据表保持一直,或者相关有意义,比如表eb_user
,模型名为User
protected $pk = 'uid';
protected $name = 'user';
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
关联model
class UserDao extends BaseDao
{
protected function setModel(): 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->search()
,传入条件可以配合模型中创建的搜索器一起使用,是查询条件更简介