-
模型聚合操作:
count/sum/max/min/avg,用法均一樣
<?php namespace?app\index\controller; use?think\Controller; use?app\index\model\User; class?Index?extends?Controller { ????public?function?index(){ ????????#count獲取表中數據的條數 //????????????$res?=?User::count(); ????????#給count加where條件 //????????$res?=?User::where('id','>',5) //????????????->where('id','<',10) //????????????->count(); ????????#max/min獲取指定字段中數據的最大/小值 //????????$res?=?User::max('id'); ????????#給max/min添加where條件 //????????$res?=?User::where('id',"<",9)->count('id'); ????????#sum對指定字段數據求和 //????????$res?=?User::sum('id'); ????????#對sum添加where條件 //????????$res?=?User::where('id','<',8)->sum('id'); ????????#avg對指定字段數據求平均值 //????????$res?=?User::avg('id'); ????????#對avg添加where條件 ????????$res?=?User::where('id','<',8)->avg('id'); ????????????dump($res); ????} }
查看全部 -
使用MODEL對象對數據進行刪除:
<?php namespace?app\index\controller; use?think\Controller; use?app\index\model\User; class?Index?extends?Controller { ????public?function?index(){ ????????#destroy返回影響行數 //????????$res?=?User::destroy(function?($query){ //???????????$query->where('id','<',5) //???????????????->whereOr('id','>',10)?; //????????}); //????????dump($res); ????????#get返回影響行數 //????????$userModel?=?User::get(7); //????????$res?=?$userModel->delete(); //????????dump($res); ????????#delete,返回影響行數 ????????$res?=?User::where('id',10)->delete(); ????????dump($res); ????} }
查看全部 -
使用模型更新表數據:
<?php namespace?app\index\controller; use?think\Controller; use?app\index\model\User; class?Index?extends?Controller { ????public?function?index(){ ????????#當數據中存在自增id時,數據更新方式,返回修改的內容,無法驗證是否更改 //????????$res?=?User::update([ //????????????'id'?=>?1, //????????????'username'?=>?'wenco_update' //????????]); //????????dump($res->toArray()); ????????#當數據中不存在自增id時如下,第二個參數即為where,可以為閉包函數,返回修改內容 //????????????????$res?=?User::update([ //????????????'username'?=>?'wenco_update' //??當第二個參數為數組??????],['id'?=>?'2']); //當第二個參數為閉包函數????????],function?($query){ //????????????????????$query->where('id','>=',?15); //????????????????}); ????????#where?返回被影響行數,推薦使用! //????????$res?=?User::where('id','between',[1,5])->update([ //????????????'username'?=>?'wenco_old' //????????]); //????????dump($res); ????????#User::get,返回被影響行數 //????????$userModel?=?User::get(1); //????????$userModel->username?=?'123'; //????????$userModel->email?=?'[email protected]'; //????????$res?=?$userModel->save(); //????????dump($res); ????????#new?User,返回影響行數,第二個參數可以為閉包函數 //????????$userModel?=?new?User; //????????$res?=?$userModel->save([ //????????????'username'?=>?555 //????????],['id'?=>??18]); //????????dump($res); ????????#saveAll,返回結果集,不推薦使用 ????????$userModel?=?new?User; ????????$res?=?$userModel->saveAll([ ????????????['id'?=>?1,'username'?=>?'wencocococ'?], ????????????['id'?=>?2,'username'?=>?'wencocococ'?] ????????]); ????????dump($res); ????} }
查看全部 -
向數據庫中添加數據:
<?php namespace?app\index\controller; use?think\controller; use?app\index\model\User; class?Index { ????public?function?index() ????{ ????????#user::create(),當第二個參數不為數組而是true時會自動過濾掉表中沒有的字段的數據,第二個參數為字段數組,表示只允許在這兩個字段內添加數據 //????????User::create([ //????????????'username'??=>??'wenco_1', //????????????'password'??=>??md5('wenco_1'), //????????????'email'?????=>??'[email protected]', //????????????'num'???????=>??100, //????????????'demo'??????=>??123 //????????],['username','email']); //????????$userModel?=?new?User; //????????$userModel->username?=?'wenco_2'; //????????$userModel->password?=?md5('wenco_2'); //????????$userModel->save(); //????????dump($userModel->id); ????????#直接使用save(),返回被影響行數,allowField()與上面create的第二個參數功能及用法一樣 //????????$userModel?=?new?User; //????????$res?=?$userModel->allowField(true)->save([ //????????????'username'????=>??"wenco_5", //????????????'password'???=>??md5('wenco_5'), //????????????'email'??????=>???'[email protected]' //????????]); ????????#使用saveAll同時傳遞多條數據 ????????$userModel?=?new?User; ????????$res?=?$userModel->allowField(true)->saveAll([ ????????????['email'?=>?'[email protected]'], ????????????['email'?=>?'[email protected]'], ????????????['email'?=>?'[email protected]'] ????????]); ????????foreach?($res?as?$val){ ????????????dump($val->?toArray()); ????????} ????????} }
查看全部 -
模型獲取數據庫數據:
<?php namespace?app\index\controller; use?think\controller; use?app\index\model\User; class?Index { ????public?function?index(){ ????????#通過get方式獲取數據,括號內可以為主鍵,也可以為閉包函數 //????????$res?=?User::get(function($query){ //????????????$query->where("username","eq","wenco_3") //????????????->field("email"); //????????}); //????????$res?=?User::where("id","<=",15) //????????????->field("id,username") //????????????->limit(19) //????????????->order("id"??,"DESC") //????????????->select(); ????????#user::all() //????????$res?=?User::all(function($query){ //????????????$query->where("id","<","5") //????????????????->field("id","username"); //????????}); ????????#column()第二個參數為新生成的數組的下標 ????????$res?=?User::column("email","username"); //????????foreach($res?as?$val){ //????????????dump($val->toArray()); //????????} ????????//$res?=?$res->toArray();//將結果轉換成數組 ????????dump($res); ????} }
查看全部 -
首先創建一個Use模型,要繼承think下的Model:
<?php namespace?app\index\model; use?think\Model; class?User?extends?Model{ }
然后在控制器中引用:
<?php namespace?app\index\controller; use?think\controller; use?app\index\model\User; class?Index { ????public?function?index(){ ????????#new對象 //????????$user?=?new?User; //????????$res?=?$user::get(5); ????????#$user?=?loader::model():需要use?think下的Loader?//use?think\Loader; //????????$res?=?Loader::model("User"); //????????$res?=?User::get(2); ????????#助手函數model() //????????$user?=?model("User"); //????????$res?=?$user::get(4); ????????$res?=?$res->toArray();//將結果轉換成數組 ????????dump($res); ????} }
查看全部 -
鏈式操作:
<?php namespace?app\index\controller; use?think\controller; use?think\Db; class?Index { ????public?function?index(){ ????????$db?=?Db::name('user'); //????????$data?=?[]; //????????for?($i=1;?$i<21;?$i++){ //????????????$data[]?=?[ //????????????????'username'?=>?"wenco_{$i}", //????????????????'password'?=>?md5("wenco_{$i}"), //????????????????'email'????=>?"wenco_{$i}@qq.com", //????????????????'num'??????=>?$i+100 //????????????]; //????????} //????????$res?=?$db->insertALL($data); ????????$res?=Db::table('imooc_user') ????????????->field("username","id","group") ????????????->order('id',DESC) ????????????->limit(3,5)//limit分頁limit((m-1)*n,n)===??m:當前頁數,n:每頁多少條數據 ????????????->page(2,5) ????????????->group("'group'") ????????????->select(); ????????dump($res); ????} }
查看全部 -
條件構造:
<?php namespace?app\index\controller; use?think\controller; use?think\Db; class?Index { ????public?function?index(){ ??????????$db?=?Db::name('user'); ??????????#buildSql:返回sql語句 ??????????#不區分大小寫 ??????????#EQ???= ??????????#NEQ??<> ??????????#LT???< ??????????#ELT???<= ??????????#GT???> ??????????#EGT???>= ??????????#BETWEEN???BETWEEN?*?AND?* ??????????#NOTBETWEEN????NOTBETWEEN?*?AND?* ??????????#IN???IN?(*,*) ??????????#NOTIN???NOT?IN(*,*) ??????????#連續使用where方法構成and?where條件, //????????????$sql?=?$db->where('id','BETWEEN'?,'1,5')->buildSql(); ????????????$sql?=?$db ????????????????->where('id','exp'?,'not?in(1,2,3)') ????????????????->where('username','eq',?'wenco_1') ????????????????->buildSql(); ??????????#where與whereOr?構成or的關系 ????????????$sql?=?$db ????????????????->where('id','exp'?,'not?in(1,2,3)') ????????????????->whereOr('username','eq',?'wenco_1') ????????????????->buildSql(); ??????????dump($sql); ????} }
查看全部 -
delete:
<?php namespace?app\index\controller; use?think\controller; use?think\Db; class?Index { ????public?function?index(){ ??????????$db?=?Db::name('user'); ??????????#delete返回影響行數,當在deleted()中的參數為主鍵時可不加where條件 ??????????$res?=?$db->delete(2); ??????????dump($res); ????} }
查看全部 -
數據更新update/setField/setInc/setDec
<?php namespace?app\index\controller; use?think\controller; use?think\Db; class?Index { ????public?function?index() ????{ ??????????$db?=?Db::name('user'); //??????#update返回影響行數 //????????$res?=?$db->where(['id'?=>?1])->update(['username'?=>?'1234567']); ????????#setField,設置字段的值,返回被影響的數據的行數 //????????$res?=?$db->where(['id'=>3])->setField([ //????????????'username'?=>?'88888888', //????????????'email'????=>?'66666666' //????????]); ????????#setInc返回影響行數,第一個參數為字段名,第二個數據為在原數據的基礎上的/*自增數*/ ????????$res?=?$db->where(['id'=>'1'])->setInc('num',5); ????????#setDec同setInc,只不過第二個參數為/*自減數*/ ????????$res?=?$db->where(['id'=>'1'])->setDec('num',5); ????????dump($res); ????} }
查看全部 -
數據插入:insert /insertGetId/insertAll
<?php namespace?app\index\controller; use?think\controller; use?think\Db; class?Index { ????public?function?index(){ ????????$db?=?Db::name('user'); ????????#insert?返回值為插入影響行數 //????????$res?=?$db->insert([ //???????????'username'????=>?'wenco', //????????????'email'??????=>?'[email protected]', //????????????'password'???=>?md5('today') //????????]); ????????#inset插入并且返回自增ID //????????$res?=?$db->insertGetId([ //???????????'username'????=>?'wenco', //????????????'email'??????=>?'[email protected]', //????????????'password'???=>?md5('today') //????????]); ????????#insetALL,返回插入成功數 ????????$data?=?[]; ????????for?($i?=?1;?$i?<?10;$i++){ ????????????$data[]?=?['username'????=>?"wenco_{$i}", ????????????'email'??????=>?"wenco_{$i}@qq.com", ????????????'password'???=>?md5("today_{$i}") ????????????]; ????????} ????????$res?=?$db->insertAll($data); ????????dump($res); ????} }
查看全部 -
thinkphp Db類提供的四個查找數據的方法;
select /column /find/ value
<?php namespace?app\index\controller; use?think\controller; use?think\Db; class?Index { ????public?function?index(){ #?使用sql語句的方式查詢數據庫 //????????$res?=?Db::query("select?*?from?imooc_user?where?id=?",[1]); #?返回修改影響的結果條數 /*???????$res?=?Db::execute("insert?into?imooc_user?set?username?=?,password=?,email=?",?[ ???????????'imooc', ???????????md5('imooc'), ???????????'[email protected]' ????????]);*/ #返回一個二維數組,在不添加where條件下輸出所有數據,如果結果不存在返回一個空數組 ????????/*$res?=?Db::table('imooc_user')->?where([ ????????????'id'?=>?"1" ????????])->select();*/ #一維數組,返回該列下的所有值,如果存在第二個參數,那個以第二個參數的值作為數組的key值,如果結果不存在,返回一個空數組 ????????//$res?=?Db::table('imooc_user')->column('username','email'); #find方法,返回一個一維數組,返回一條數據,如不添加where條件默認返回正序排列下id最小的那一條記錄,如果結果不存在返回null /*????????$res?=?Db::table('imooc_user')->where([ ????????????'id'?=>?"2" ????????])->find();*/ #返回一條記錄,某個字段的值,當結果不存在返回null //????????$res?=?Db::table('imooc_user')->where(['id'=>'2'])->value('username'); #用Db::name,相當于Db::table傳遞表前綴 //????????$res?=?Db::name('user')->select(); #助手函數db,與db類不同的是助手函數每次調用都要進行實例化! ????????$res?=?db('user')->select(); ????????dump($res); ????} }
查看全部 -
更新數據,并且獲取更新數據是否成功,
一般不建議使用saveAll和靜態方法,
一般使用'where() -> updata()'
或者使用'save() -> where()'?
或者 'save([],function(){})'
查看全部 -
修改數據庫配置方式
1.可在config下的database.php返回配置信息,直接 DB::connect()
2.在方法里面引入 use think\db;DB::connect(array);數組即數據庫連接配置
3.同樣是DB::connect("mysql://root:[email protected]:3306:/databasename#utf8");//use think\Db?
4.在配置文件中,添加一個數組,DB::connect("數組鍵名");//use think\Db
查看全部 -
db? 每次都會實例化
查看全部
舉報