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();