- 模型的数据字段和表字段是对应关系,默认会自支动获取,包括字段的类型。但是自动获取会导致增加一次查询,如果在模型中配置字段信息,会减少内存开销。可以在模型设置 $schema 字段,明确定义字段信息,字段需要对应表写完整。
protected $schema = [
'id' => 'int',
'name' => 'string',
'status' => 'tyint',
];
- 系统提供了一条命令,生成一个字段信息缓存,可以自动生成,在项目目录中,运行命令:
php think optimize:schema
,我们可以先把这里键值对复制到 $schema 属性上,开启 trace 测试效果;这时在控制器执行查询时,会发现减少一次 SQL 查询;其实不必设置 $chema 属性,因为只对模型有效;如果想模型和数据库 Db 类同时有效,直接运行字段缓存文件即可。默认情况下字段缓存文件是关闭状态,需在 config/database.php 开启
'fields_cache' => true,
- 当数据获取到后,想要单独获取数据可以用 -> 和数组方式来获取
$user = UserModel::find(19);
echo $user->name;
echo $user['name'];
- 在模型端把数据整理好,交给控制器直接调用
public function getUsername($id){
$obj = $this->find($id);
return $obj->getAttr('username');
}
$user = new UserModel();
return $user->getUserName(19);
- 字段的赋值操作,可以是 -> 或 数组方式,作用就是提交给模型处理
$user = new UserModel();
$user->username = 'Mr.lee';
$user['email']='lee@163.com';
- 默认情况下,字段是严格区分大小写的,也就是需要和数据字段保持一致。但是我们可以在模型属性$strict 设置为 flalse 即可实现非严格字段。
protected $strict = false;
echo $user->createTime;