通常每个模型类是 *** 作某个数据表,在大多数情况下,系统会自动获取当前数据表的字段信息。
系统会在模型首次实例化的时候自动获取数据表的字段信息(而且只需要一次,以后会永久缓存字段信息,除非设置不缓存或者删除),如果是调试模式则不会生成字段缓存文件,则表示每次都会重新获取数据表字段信息。
字段缓存保存在Runtime/Data/_fields/ 目录下面,缓存机制是每个模型对应一个字段缓存文件(注意:并非每个数据表对应一个字段缓存文件),命名格式是:
数据库名模型名(小写)php
例如:
demouserphp // User模型生成的字段缓存文件
demoarticlephp // Article模型生成的字段缓存文件
字段缓存包括数据表的字段信息、主键字段和是否自动增长,如果开启字段类型验证的话还包括字段类型信息等等,无论是用M方法还是D方法,或者用原生的实例化模型类一般情况下只要是不开启调试模式都会生成字段缓存(字段缓存可以单独设置关闭)。
可以通过设置DB_FIELDS_CACHE 参数来关闭字段自动缓存,如果在开发的时候经常变动数据库的结构,而不希望进行数据表的字段缓存,可以在项目配置文件中增加如下配置:
// 关闭字段缓存
'DB_FIELDS_CACHE'=>false
注意:调试模式下面由于考虑到数据结构可能会经常变动,所以默认是关闭字段缓存的。
如果需要显式获取当前数据表的字段信息,可以使用模型类的getDbFields方法来获取当前数据对象的全部字段信息,例如:
$User = M('User');
$fields = $User->getDbFields();
如果你在部署模式下面修改了数据表的字段信息,可能需要清空Data/_fields目录下面的缓存文件,让系统重新获取更新的数据表字段信息,否则会发生新增的字段无法写入数据库的问题。
如果不希望依赖字段缓存或者想提高性能,也可以在模型类里面手动定义数据表字段的名称,可以避免IO加载的效率开销,例如:
namespace Home\Model;
use Think\Model;
class UserModel extends Model {
protected $fields = array('id', 'username', 'email', 'age');
protected $pk = 'id';
}
pk属性定义当前数据表的主键名,默认值就是id,因此如果是id的话可以无需定义。
除了可以设置数据表的字段之外,我们还可以定义字段的类型,用于某些验证环节。例如:
namespace Home\Model;
use Think\Model;
class UserModel extends Model {
protected $fields = array('id', 'username', 'email', 'age',
'_type'=>array('id'=>'bigint','username'=>'varchar','email'=>'varchar','age'=>'int')
);
}
第一条可以使用 jeuery autocomplete实现
第二条下拉框中直接绑定数据
<select name="xxx"> <c:forEach items="${list}" var="item"> <option value="${itemxxx}">${itemxxx}</option> </c:forEach></select>
缓存另一块。oracle数据库数据在缓存中保留一段时间,直至其占有的缓冲区需要缓存另一块为止。OracleDatabase,又名OracleRDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。
以上就是关于启用数据库字段缓存有什么好处全部的内容,包括:启用数据库字段缓存有什么好处、数据库缓存。、oracle数据库缓存保留多久等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)