>[danger] 框架數據模型是基于 PDO 驅動的,記得要開啟PHP的PDO支持
基于數據模型的操作在使用【**數組傳參**】時全部都是通過 參數綁定 來實現的
所以大家應盡量使用數組傳參的方式,避免直接執行SQL語句帶來的隱患
## 實例化數據模型
**1. D( ) 函數**
D('user') 函數直接實例化數據模型,參數 user 是將要操作的數據表名(省略前綴,前綴可在配置文件自定義)
user 參數可省略,后續操作時可以使用 table('user') 函數來指定
$m = D('user');
$m = D()->table('user');
**2. M( ) 函數**
M('user')函數 作用是實例化用戶的自定義模型 user.class.php
user 對應用戶模型的**文件名**以及**類名**和**數據表名**
用戶自定義模型的存放目錄是:應用目錄/model/ 或者是 根目錄下的 common/model/
優先使用 應用目錄下的模型文件,不存在時會到common目錄下查找
如果都不存在 將直接實例化數據模型,也就是等同于D( )函數
$m = M('user');
## 切換數據表
$m = D('user');
...數據操作;
$m->table('cart')... //切換到 cart 表進行其它數據操作
## 設置表別名
在指定表名之后緊跟著使用 ->alias('name') 來指定該數據表的別名:
$m = D();
$m->table('user')->alias('a');
$m = D('user')->alias('u');
## 獲取錯誤信息
$m = D('user');
...數據操作
$err = $m->getError();
## 獲取最后執行的SQL語句 及 所綁定的參數
$m = D('user');
...數據操作
$sql = $m->getSql(); //最后執行的sql語句
$args = $m->getArgs(); //最后執行的sql語句所綁定的參數
## 連貫操作
數據模型的操作可以使用 -> 操作符依次調用多個方法,例如:
$m = D('user');
$field = ['id','name','age'];
$where = ['id >'=>0];
$user = $m->field($field)->where($where)->limit(20)->select();
## 直接執行SQL語句
**1. 查詢數據**
$m = D();
$sql = 'SELECT * FROM `zphp_user`';
$user = $m->queryOne($sql); //只取一條數據
$list = $m->queryAll($sql); //取出所有數據
**2. 寫入數據**
如果是插入數據將返回插入數據的主鍵值,沒有主鍵時返回 true
如果是更新數據將返回受影響的數據行數
$m = D();
$result = $m->submit($sql);
## 獲取所有數據表名
$m = D();
$tables = $m->getTables();
## 獲取表的所有字段
$m = D('user');
$fields = $m->getFields();
## 直接使用PDO對象
$db = \z\db::db(); //返回的 PDO 對象
$sql = 'SELECT * FROM `zphp_user`';
$sth = $db->query($sql);
$list = $sth->fetchAll();