1、Model类中的部分属性意义及设定
tableName 属性
当表前缀和系统设置的前缀(DB_PREFIX)一致而表名和模型名称不一致时,可设置此属性,例如表名称为 users ,而模型名称为 UserModel ,那么须要在模型类设置: php
class UserModel extends Model{ protected $tableName = 'users'; }
class UserModel extends Model{ protected $trueTableName = 'my_user'; }
注意 trueTableName 值为完整的表名(包括前缀)。
dbName 属性
dbName 属性定义模型当前对应的数据库名称,只有当前的模型类对应的数据库名称和配置文件不一样的时候才须要定义: html
protected $dbName = 'cdb';如何获取主键
$pk = $Model->getPk();2、ThinkPHP 查询数据主要提供如下几类查询:
详情查看http://www.5idev.com/p-thinkphp_CURD_select.shtml thinkphp
3、读取数据的例子 数据库
读取操做
下面的例子将 user 表的全部数据读取出来并显示: 数组
public function read(){ $Dao = M("User"); // 查询数据 $list = $Dao->select(); //dump($list); // 用 dump() 能够在调试阶段查看数据是否已读取 // 模板变量赋值 $this->assign("list", $list); // 输出模板 $this->display(); }数据显示模板
模板文件用于显示刚才读取的 User 表的数据。在学习阶段,要不想使用模板,也能够直接使用 foreach 语法在 read() 操做内直接显示读取的数据。下面是模板相应的代码片断,咱们将读取的数据在一个表格中显示出来: 分布式
<table border="1"> <tr> <th width="10%">ID</th> <th width="30%">用户名</th> <th width="30%">电子邮件</th> <th>注册时间</th> </tr> <volist name="list" id="vo"> <tr> <td align="center">{$vo['uid']}</td> <td>{$vo['username']}</td> <td>{$vo['email']}</td> <td>{$vo['regdate']|date='Y-m-d H:i',###}</td> </tr> </volist> </table>4、更新数据库的例子
public function update(){ header("Content-Type:text/html; charset=utf-8"); $Dao = M("User"); // 须要更新的数据 $data['email'] = 'Jack@163.com'; // 更新的条件 $condition['username'] = 'Jack'; $result = $Dao->where($condition)->save($data); //或者:$resul t= $Dao->where($condition)->data($data)->save(); if($result !== false){ echo '数据更新成功!'; }else{ echo '数据更新失败!'; } }使用setField更新单个字段
public function update(){ header("Content-Type:text/html; charset=utf-8"); $Dao = M("User"); $result = $Dao->where('uid = 2')->setField('email','Jack@163.com'); if($result !== false){ echo '数据更新成功!'; }else{ echo '没更新任何数据!'; } }使用setField更新多个字段
public function update(){ header("Content-Type:text/html; charset=utf-8"); $Dao = M("User"); $result = $Dao->where('uid = 28')->setField(array('username','email'),array('Jack','Jack@163.com')); if($result !== false){ echo '数据更新成功!'; }else{ echo '没更新任何数据!'; } }
5、删除数据 ide
public function del(){ header("Content-Type:text/html; charset=utf-8"); $Dao = M("User"); // 删除 uid=5 的数据记录 $result = $Dao->where('uid = 5')->delete(); if($result !== false){ echo '删除 ',$result,' 条数据。'; }else{ echo '删除数据失败!'; } }
delete() 方法能够用于删除单个或者多个数据,主要取决于 where() 删除条件。另外也能够配合连贯操做中的其余方法如 order()、limit() 等构造出更符合须要的删除条件: 学习
$Dao = M("User"); $result = $Dao->where('status=0')->order('regdate ASC')->limit('5')->delete();
6、连贯操做 ui
连贯操做主方法
this
连贯操做主方法是指对数据库的操做方法,例如 select(查询)、find(查询一条记录)、getBy动态方法、add(写入)、save(更新)、delect(删除)等。注意:主方法这一称谓并不是官方的称呼,而是本教材为了便于理解而定义的。
一个连贯操做中只容许出现一个主方法,且主方法必需要写在连贯操做的最后。本教程对各主方法分别作了详细介绍:
参考:http://www.5idev.com/p-thinkphp_continuous_methods.shtml
7、分布式数据库配置
参考:http://doc.thinkphp.cn/manual/distributed_database.html
配置系统配置文件:
'DB_RW_SEPARATE'=>true,8、事务支持
$User->startTrans(); $User->commit(); $User->rollback();