65 模型层thinkphp看书总结
2015-07-17 02:30
645 查看
1.关闭字段缓存
‘DB_FIELDS_CACHE’ => false
2.获取字段信息 主键
$pk = $Model->getPk()
$fields = $User -> getDbfields ();
3.模型层可以手动定义数据表字段名称 避免IO加载开销
protected fields = array (
'id', 'username', 'passwrod', ' _pk' =>'id', '_autoinc' =>true
);
4.跨库操作
protected 'dbName' = ' info';
protected '_tablePrefix' = '_other';
5.切换数据库
$this->db(1,"mysql://root:123456@localhost:3306/test")->query("查询SQL");
$this->db(1)->query("查询SQL");
6.分布式数据库
return array(
//分布式数据库配置定义
'DB_TYPE' => 'mysql', //分布式数据库类型必须相同
'DB_HOST' => '192.168.0.1,192.168.0.2',
'DB_NAME' => 'thinkphp', //如果相同可以不用定义多个
'DB_USER' => 'user1,user2',
'DB_PWD' => 'pwd1,pwd2',
'DB_PORT' => '3306',
'DB_PREFIX' => 'think_',
//其他配置参数
// ...
7.读写分离
'DB_RW_SEPARATE'=>true,
8.非法html代码可以使用htmlspecialchars进行编码,以防止用户提交的html代码在展示时被执行
$_POST['title'] = htmlspecialchars($_POST['title']);
9.查询锁定
$list = $User->lock(true)->where('status=1')->order('create_time')->limit(10)->select();
10.字段排除
$Model->field('create_time,read_count,comment_count',true);
11.事物支持
// 在User模型中启动事务
$User->startTrans();
// 进行相关的业务逻辑操作
$Info = M("Info"); // 实例化Info对象
$Info->save($User); // 保存用户信息
if (操作成功){
// 提交事务
$User->commit();
}else{
// 事务回滚
$User->rollback();
}
12.高级模型功能
a.字段过滤
protected $_filter = array(
'content'=>array('function_1','function_2'),
)
b.延迟更新
$User->where('id=3')->setInc("score",10);// 用户的积分加10
c.分表
protected $partition = array(
'field' => 'name',// 要分表的字段 通常数据会根据某个字段的值按照规则进行分表
'type' => 'md5',// 分表的规则 包括id year mod md5 函数 和首字母
'expr' => 'name',// 分表辅助表达式 可选 配合不同的分表规则
'num' => 'name',// 分表的数目 可选 实际分表的数量
);
13.定义虚拟模型两种方式 仅用于封装业务逻辑
a. Protected $autoCheckFields = false;
b.Class UserModel { }
//,不能再使用模型的CURD操作方法
‘DB_FIELDS_CACHE’ => false
2.获取字段信息 主键
$pk = $Model->getPk()
$fields = $User -> getDbfields ();
3.模型层可以手动定义数据表字段名称 避免IO加载开销
protected fields = array (
'id', 'username', 'passwrod', ' _pk' =>'id', '_autoinc' =>true
);
4.跨库操作
protected 'dbName' = ' info';
protected '_tablePrefix' = '_other';
5.切换数据库
$this->db(1,"mysql://root:123456@localhost:3306/test")->query("查询SQL");
$this->db(1)->query("查询SQL");
6.分布式数据库
return array(
//分布式数据库配置定义
'DB_TYPE' => 'mysql', //分布式数据库类型必须相同
'DB_HOST' => '192.168.0.1,192.168.0.2',
'DB_NAME' => 'thinkphp', //如果相同可以不用定义多个
'DB_USER' => 'user1,user2',
'DB_PWD' => 'pwd1,pwd2',
'DB_PORT' => '3306',
'DB_PREFIX' => 'think_',
//其他配置参数
// ...
7.读写分离
'DB_RW_SEPARATE'=>true,
8.非法html代码可以使用htmlspecialchars进行编码,以防止用户提交的html代码在展示时被执行
$_POST['title'] = htmlspecialchars($_POST['title']);
9.查询锁定
$list = $User->lock(true)->where('status=1')->order('create_time')->limit(10)->select();
10.字段排除
$Model->field('create_time,read_count,comment_count',true);
11.事物支持
// 在User模型中启动事务
$User->startTrans();
// 进行相关的业务逻辑操作
$Info = M("Info"); // 实例化Info对象
$Info->save($User); // 保存用户信息
if (操作成功){
// 提交事务
$User->commit();
}else{
// 事务回滚
$User->rollback();
}
12.高级模型功能
a.字段过滤
protected $_filter = array(
'content'=>array('function_1','function_2'),
)
b.延迟更新
$User->where('id=3')->setInc("score",10);// 用户的积分加10
c.分表
protected $partition = array(
'field' => 'name',// 要分表的字段 通常数据会根据某个字段的值按照规则进行分表
'type' => 'md5',// 分表的规则 包括id year mod md5 函数 和首字母
'expr' => 'name',// 分表辅助表达式 可选 配合不同的分表规则
'num' => 'name',// 分表的数目 可选 实际分表的数量
);
13.定义虚拟模型两种方式 仅用于封装业务逻辑
a. Protected $autoCheckFields = false;
b.Class UserModel { }
//,不能再使用模型的CURD操作方法
相关文章推荐
- php获取错误信息的方法
- thinkphp autoload 命名空间自定义 namespace
- php函数
- php-max_execution_time
- PHP 使用GD库生成验证码 在图像上绘制汉字
- JS读取PHP数组
- PHP中类的继承关系
- php和js中数组中分别循环找出最大的数。
- 关于传到PHP用PHP处理计算器和js做的计算器对比
- TPS和事务响应时间的关系
- PHP原理之内存管理中难懂的几个点
- Proftpd遇到的坑
- 一个理解PHP面向对象编程(OOP)的实例
- PHP 数组排序
- Yii2学习笔记(十一):模型中attributeLabels()函数的作用
- PHP调用接口到阿里云OSS同步上传图片
- php 类文件加载 Autoloader
- Busybox下tftp命令使用详解
- php excel文件导出之二 图像导出
- 正则经验