用sql語句的寫法:
查詢用query? ?增刪改用execute
$result2 = Db::connect('db2') ->query('select * from tp_data where id = 6'); 接數(shù)據(jù)庫db2進(jìn)行操作
$result3 = Db::connect('db3') ->execute('TRUNCATE table tp_data');接數(shù)據(jù)庫db3進(jìn)行操作
連接不同數(shù)據(jù)庫的使用 前提要在database配置文件中 進(jìn)行配置
1古戴、查詢
關(guān)聯(lián)查詢以及分頁
方法一:$list = Db::name('article')->alias('a')->join('cate c','c.id=a.cateid')->field('a.id,a.title,a.pic,a.author,a.static,c.catename')->paginate(3);
方法二:使用關(guān)聯(lián)模型矩肩,在article模型中定義歸從關(guān)系:
在控制器中正常查詢:$list = ArticleModel::paginate(5);
視圖輸出顯示:<td align="center">{$vo.cate.catename}</td>
普通查詢:
Db::name('data')->where('id',16)->value('name');//指定行name列的值
Db::name('data')->where('id',16)->column('name');//指定行name列的所有值
Db::name('users')->find();//一條數(shù)據(jù)
Db::name('user')->where('status',1)->field('id,name')->order('id','desc')->limit(10)->select();//全部
2黍檩、模型查詢
Users::get(1);//查詢users表中主鍵為1的數(shù)據(jù)
Users::where('mobile','182')->find();//查詢users表中mobile為182的數(shù)據(jù)
Users::getByMoile(182);//查詢users表中mobile為182的數(shù)據(jù)
3、條件寫法
Db::name('users')->where('id','<>',4)->select();
Db::name('users')->where('id','in',[1,2,3,4,5,6])->select();
Db::name('users')->where('id','between',[1,6])->select();
Db::name('users')->where('id','>=',1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ->where('name','like','%php%')
????????????????????????????->select();
Db::name('users')->where('id|status','>',0)
Db::name('users')->where('name','like','%think%')
? ? ? ? ? ? ? ? ? ? ? ? ? ? ->where('id',['in',[1,2,3]],['>=',1],'or')
? ? ? ? ? ? ? ? ? ? ? ? ? ? ->select();
等同于:select * from users where 'name' like '%think%' and ('id' in (1,2,3) or 'id' >= 1 )
使用exp條件表達(dá)式喳逛,表示后面是原生的sql語句表達(dá)式
Db::name('users')->where('id','exp'," >1 and name ='111'")->select();
時間查詢
Db::name('users')->whereTime('reg_time','>','2016-01-01')->select();
//此查詢自動將日期轉(zhuǎn)換成時間戳怀浆,與數(shù)據(jù)庫中的時間戳比較大小
Db::name('users')->whereTime('reg_time','>','this week')->select();
//查詢本周一之后的
Db::name('users')->whereTime('reg_time','>','last week')->select();
//查詢上周的
Db::name('users')->whereTime('reg_time','>','-2 days')->select();
//查詢最近兩天的
Db::name('users')->whereTime('reg_time','>','today')->select();
//查詢今天的
Db::name('users')->whereTime('reg_time','between',['2016-1-1','2017-1-1'])->select();
//查詢2016-1-1~2017-1-1的數(shù)據(jù)(含)
4、多表查詢也叫視圖
Db::view('data','id,name,status') //查data表的id,name,status字段
? ? ->view('users',['nickname'=>'user_name','mobile','email'],'users.user_id = data.id')
?//查users表的nickname(別名為user_name),mobile,email 通過user_id和id進(jìn)行關(guān)聯(lián)
? ? ->where('data.status',1)
? ? ->order('id desc')->select();
3、事務(wù)
mysql操作的表類型要設(shè)置為InnoDB 才能支持事務(wù) 要么全部成功 要么全部失敗
Db::transaction(function (){//放事務(wù)代碼});
例如:
Db::transaction(function (){
? ? Db::name('data')->delete(1);
? ? Db::name('data')->insert(['id'=>6,'name'=>'tp','status'=>1]);
});