字段缓存的应用

作用简述:

1.模型的数据字段和表字段是对应关系,默认会自动获取,包括字段的类型;
2. 自动获取会导致增加一次查询,如果在模型中配置字段信息,会减少内存开销;
3. 可以在模型设置$schema 字段,明确定义字段信息,字段需要对应表写完整;

//设置字段信息,需要写完整的数据表字段
protected $schema = [
'id' => 'int',
'username' => 'string',
'status' => 'int',
'create_time' => 'datetime',
'...' => '...'
];

这样写会很麻烦,于是就用到我们的字段缓存。

字段缓存仅在部署模式下生效,并且仅适用于使用think-orm的情况,如果你使用了其它的ORM库,则不支持生成。

可以通过生成数据表字段信息缓存,提升数据库查询的性能,避免多余的查询。命令如下:

在项目根目录下执行:

php think optimize:schema

此时我们可以看到,缓存目录多出文件夹schema
在这里插入图片描述
打开后里面便是自动的缓存字段

<?php 
return array (
  'id' => 'int',
  'username' => 'string',
  'password' => 'string',
  'gender' => 'string',
  'email' => 'string',
  'price' => 'float',
  'details' => 'string',
  'uid' => 'int',
  'status' => 'int',
  'list' => 'string',
  'delete_time' => 'datetime',
  'create_time' => 'datetime',
  'update_time' => 'datetime',
  '_pk' => 'id',
  '_autoinc' => 'id',
);

注意

默认情况下字段缓存文件是关闭状态,需要在 config/database.php 开启;
// 开启字段缓存

'fields_cache' => true,

多应用模式下

如果是多应用模式,你可以使用下面的指令生成admin应用的字段缓存。

php think optimize:schema admin

会自动生成当前数据库配置文件中定义的数据表字段缓存,也可以指定数据库生成字段缓存(必须有用户权限),例如,下面指定生成demo数据库下面的所有数据表的字段缓存信息。

php think optimize:schema --db demo

执行后会自动在runtime/schema目录下面按照数据表生成字段缓存文件。

没有继承think\Model类的(抽象)模型类不会生成。如果定义了公共模型类,最好把公共模型类定义为抽象类(abstract)。

更新数据表字段缓存也是同样的方式,每次执行都会重新生成缓存。如果需要单独更新某个数据表的缓存,可以使用:

php think optimize:schema --table think_user

支持指定数据库名称

php think optimize:schema --table demo.think_user
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值