>一般情況下建議采用model來操作MYSQL數據庫
<br/>
## pk - 設置主鍵字段
~~~
use \api\Mysql;
Mysql::pk('id');
~~~
<br/>
## select - 設置查詢字段
~~~
use \api\Mysql;
// 不傳值則表示查詢所有,即“*”
Mysql::select();
Mysql::select('id, name');
Mysql::select('COUNT(`id`) AS count');
// 支持數組
Mysql::select(['id', 'name']);
~~~
<br/>
## from - 設置操作的數據表
~~~
use \api\Mysql;
// 不需要寫表前綴,表前綴應在Mysql.php中配置
Mysql::from('table');
// 第二個參數可以設置數據表別名
Mysql::from('table', 't');
~~~
<br/>
## where - 條件
~~~
use \api\Mysql;
// id等于1
Mysql::where([
'id' => 1
]);
// IN查詢
Mysql::where([
'id IN' => [1,2,3,4,5]
]);
// NOT IN查詢
Mysql::where([
'id NOT IN' => [1,2,3,4,5]
]);
// id大于10
Mysql::where([
'id >' => 10
]);
// id小于10
Mysql::where([
'id <' => 10
]);
// isnull
Mysql::where([
'id' => null
]);
// or
Mysql::where([
'id' => 1,
'OR state' => 1
]);
Mysql::where([
'id' => 1,
'OR id >' => 10
]);
Mysql::where([
'id' => 1,
'OR id IN' => [5,6,7]
]);
// like
Mysql::where([
'name LIKE' => '%eapi%'
]);
// 復雜查詢可將值設置為FALSE,完全以KEY作為查詢內容
Mysql::where([
'id' => 1,
'OR (id > 5 AND id < 10)' => FALSE
]);
~~~
<br/>
## order - 排序
~~~
use \api\Mysql;
Mysql::order('id DESC');
Mysql::order('id DESC,hit ASC');
// 多個排序字段也可以傳入數據格式
Mysql::order([
'id' => 'DESC',
'addtime' => 'ASC'
]);
~~~
<br/>
## group - 分組
~~~
use \api\Mysql;
Mysql::group('sex');
~~~
<br/>
## limit - 條數
~~~
use \api\Mysql;
Mysql::limit(10);
// 10到20條
Mysql::limit(10, 10);
~~~
<br/>
## join - 關聯
~~~
use \api\Mysql;
Mysql::join('table AS t', 't.id = x.id', 'LEFT');
~~~
<br/>
## one - 查詢單條
~~~
$data = mysql('table', 't')->select()
->join('table_1 t1', 't.id = t1.id', 'LEFT')
->where([
't.id' => 1
])
->one();
~~~
<br/>
## all - 查詢多條
~~~
$data = mysql('table', 't')->select()
->join('table_1 t1', 't.id = t1.id', 'LEFT')
->where([
't.id' => 1
])
->order('t.id DESC')
->limit(10)
->all();
~~~
<br/>
## add - 寫入數據
~~~
// 返回插入數據的insertId
$id = mysql('table')->add([
'id' => 1,
'name' => 'test'
]);
// 批量寫入,返回寫入的條數
$data = [
[
'id' => 1,
'name' => 'test'
],
[
'id' => 1,
'name' => 'test'
],
[
'id' => 1,
'name' => 'test'
]
];
$num = mysql('table')->add($data, TRUE);
~~~
<br/>
## edit - 更新數據
~~~
// 返回影響的條數
$num = mysql('table')->where([
'id' => 1
])->edit([
'name' => 'new name'
]);
~~~
<br/>
## delete - 刪除數據
~~~
// 返回影響的條數
$num = mysql('table')->where([
'id' => 1
])->delete();
~~~
<br/>
## query - 執行SQL語句
~~~
use \api\Mysql;
// SQL查多條
$data = Mysql::query('SELECT * FROM table')->all();
// SQL查單條
$data = Mysql::query('SELECT * FROM table limit 1')->one();
// 執行SQL語句
Mysql::query('INSERT INTO table (id) VALUES (1)');
~~~
<br/>
## lastSql - 獲取最后執行的SQL語句
~~~
use \api\Mysql;
$sql = Mysql::lastSql();
~~~
<br/>
## 事務
~~~
use \api\Mysql;
// 開始事務
Mysql::startTrans();
// 執行語句,一定要放到try、catch中
try {
TbOne::insert([
'name' => 'eapi',
'age' => 35
]);
TbOne::insert([
'name' => 'eapi',
'age' => 36
]);
// 提交事務
Mysql::commit();
} catch(\Exception $exception){
// 如果SQL有異常則回滾事務
Mysql::rollback();
}
~~~