引入數據庫:`use rp\\Db`
* name(table):數據表,無需帶前綴
* table(table):數據表,需帶前綴,完整的數據表名稱
* field(fieldStr):查詢字段,字符串或一維數組,默認\*
* alias(str):數據表別名,配合join使用
* join(table, condition, type):聯表查詢,join(關聯表, 關聯條件, 關聯類型);類型有:left,right,inner,full 默認left;可傳二維數組多表關聯,如\[\[關聯表, 關聯條件, 關聯類型\], \[關聯表, 關聯條件, 關聯類型\]\]
* where(str or array):查詢條件,可字符串或二維數組,詳細語法查看下方“where語法”
* limit(limitStr):查詢數量,如:limit('0,10')
* order(field, type):排序方式,如:order('id','desc')或order(\['id'=>'desc','time'=>'desc'\]);使用SQL函數:order('rand()')
* group(field):分組統計,如:group('type')
* find():查詢單條數據
* select():查詢多條數據
* count(field):統計數量,默認字段\*
* sum(field):獲取總和
* insert(array):插入數據,一維數組時為單條,二維數組時為多條
* update(array):修改數據,如:update(\['name'=>'name1'\])
* setInc(field, number):指定字段自增,默認+1
* setDec(field, number):指定字段自減,默認-1
* dele():刪除數據
#### 其他方法
* getSql():獲取生成select的SQL語句
* insert\_id():獲取新增數據的主鍵值
* affected\_rows():獲取操作影響的行數
* query(sql):原生Mysql語句查詢,方式:Db::instance()->query(sql語句);
#### 快速使用
~~~
//注意:必須Db::name()開始
$res=Db::name('tableName')->where(['id'=>1])->find();
~~~
#### where語法
可用表達式:=, , >=, <, <=, like, not like, in, not in, between, not between, exists, not exists, exp, find\_in\_set
表達式參數請用字符串,比如array('id'=>array('in','1,2'))或array('id'=>array('in',join(',',\[1,2\]))
字符串形式:
~~~
Db::name('tableName')->where('id=1')->find();
~~~
常規用法:
~~~
Db::name('tableName')->where(array('id'=>1,'status'=>1))->find();
//生成SQL:select * from tableName where id = 1 and status = 1
~~~
表達式用法:
~~~
Db::name('tableName')->where(array('id'=>1,'status'=>array('>',1)))->find();
//生成SQL:select * from tableName where id = 1 and status > 1
~~~
NULL用法:
~~~
Db::name('tableName')->where(array('name'=>'null'))->find();
//生成SQL:select * from tableName where name is null
~~~
NOT NULL用法:
~~~
Db::name('tableName')->where(array('name'=>'not null'))->find();
//生成SQL:select * from tableName where name is not null
~~~
多字段同條件OR:
~~~
Db::name('tableName')->where(array('name|nick'=>'test'))->find();
//生成SQL:select * from tableName where (name = 'test' or nick = 'test')
~~~
多字段同條件AND:
~~~
Db::name('tableName')->where(array('name&nick'=>'test'))->find();
//生成SQL:select * from tableName where (name = 'test' and nick = 'test')
~~~
多字段同條件表達式:
~~~
Db::name('tableName')->where(array('name|nick'=>array('like','%t%')))->find();
//生成SQL:select * from tableName where (name like '%t%' or nick like '%t%')
~~~
多字段不同條件OR:
~~~
Db::name('tableName')->where(array('name|nick'=>array('test','user')))->find();
//生成SQL:select * from tableName where (name = 'test' or nick = 'user')
~~~
多字段不同條件AND:
~~~
Db::name('tableName')->where(array('name&nick'=>array('test','user')))->find();
//生成SQL:select * from tableName where (name = 'test' and nick = 'user')
~~~
多字段不同條件表達式:
~~~
Db::name('tableName')->where(array('name|nick'=>array(array('<>','test'),array('like','%user%'))))->find();
//生成SQL:select * from tableName where (name <> 'test' or nick like '%user%')
~~~
復雜邏輯:
~~~
Db::name('tableName')->where(array('status&(name|nick)'=>array(1,array('<>','test'),array('like','%user%'))))->find();
//生成SQL:select * from tableName where (status = 1 and (name <> 'test' or nick like '%user%'))
~~~
多條件like:
~~~
Db::name('tableName')->where(array('(name|name)|(nick|nick2)'=>[['like','%user%'],['like','%member%'],['like','%user%'],['like','%member%']]))->find();
//生成SQL:select * from tableName where ((name like '%user%' or name like '%member%') or (nick like '%user%' or nick2 like '%member%'))
~~~
混合使用:
~~~
Db::name('tableName')->where(array('phone'=>'not null','money'=>array('>',100),'status&(name|nick)'=>array(1,array('<>','test'),array('like','%user%'))))->find();
//生成SQL:select * from tableName where phone is not null and money > 100 and (status = 1 and (name <> 'test' or nick like '%user%'))
~~~
注意:key為多字段時,如果value是字符串,則表示使用相同條件。如果是一維數組,則第一個字段對應value的第一個元素,以此輪推。同樣value若是二維數組,第幾個字段就對應value的第幾個元素。
#### 事務
V1.9版本新增
~~~
Db::transaction();
try{
/*
*業務邏輯sql;
*/
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
~~~