-
Model的使用方法
use app\模塊\model\模型類(lèi)名
1、$res = 模型類(lèi)名::get(1);
2、$user = new 模型類(lèi)名;
? ?$res = $user::get(1);
3、使用Loader
? ?use think\Loader;
? ?$user = Loader::model('模型類(lèi)名');
? ?$res = $user::get(1);
4、助手函數(shù)
? ?$user = model('模型類(lèi)名');
? ?$res = $user::get(1);
查看全部 -
thinkphp定義model非常方便,只需要在app/index下新建model文件夾,同時(shí)以數(shù)據(jù)表的名稱命名.php文件,引入model類(lèi),即可定義。
model的命名規(guī)范:一般model的名字和表名是對(duì)應(yīng)的,例如 表名為imooc_user->模型名User.php 表名imooc_user_info->模型名UserInfo.php
一般一個(gè)表對(duì)應(yīng)一個(gè)model類(lèi),model類(lèi)里面是對(duì)這個(gè)表的增刪改查的各種操作查看全部 -
常用鏈?zhǔn)讲僮???
原理:Db類(lèi)的鏈?zhǔn)椒椒ǚ祷谼b對(duì)象,可以繼續(xù)使用Db對(duì)象的這些方法對(duì)查詢數(shù)據(jù)進(jìn)行一些條件構(gòu)造以及范圍的選擇和排序等等;
$res=$db
->where('id','>',5) 條件ID>5
->field('username','id') 只搜索username和id兩個(gè)字段
->order('id DESC') order排序 id DESC ? id倒序
->limit(3,7) limit截取 ?3,7 ? 從3開(kāi)始截取7個(gè)
->page(3,5) page(m,n)多用于分頁(yè)//limit分頁(yè)limit((m-1)*n,n)== m:當(dāng)前頁(yè)數(shù),n:每頁(yè)多少條數(shù)據(jù)
->group('`group`') //group是關(guān)鍵字,這里用``進(jìn)行轉(zhuǎn)義
->select(); select( ); ?搜索
var_dump($res);
注意:order對(duì)group是不起作用的;就是在執(zhí)行的group進(jìn)行分組的時(shí)候,并不是在你order排序的基礎(chǔ)上進(jìn)行的;
group('字段'),他會(huì)根據(jù)字段的值為分類(lèi)標(biāo)準(zhǔn)進(jìn)行分類(lèi),比如字段值為1的單獨(dú)查出來(lái),字段值為1的單獨(dú)查出來(lái);
查看全部 -
數(shù)組的方式可以給 ? 值的數(shù)組的第一個(gè)參數(shù)設(shè)置條件結(jié)構(gòu) where(['id' => ['LT',5]])等同于where('id<5')
也可以同時(shí)有兩個(gè)查詢條件,看截圖查看全部 -
$db = Db::name('user'); #備注信息 #EQ = #NEQ <> #LT < #ELT <= #$GT > #EGT >= #BETWEEN BETWEEN * AND * #NOTBETWEEN NOTBETWEEN * AND * #IN IN (*,*) #NOTIN NOT IN (*,*) $sql = $db->where("id", "in","1,2,3") ->whereOr("username", "eq", "17771258") ->whereOr("num", 'lt', "10") ->where("email","17771258@qq.com") ->buildSql(); dump($sql);
查看全部 -
刪除:
delete(' ');函數(shù) 刪除 ?沒(méi)有條件是不會(huì)執(zhí)行操作的
#delete('') 返回影像記錄的行數(shù) 加where()條件,或者delete(''主鍵的值);
$res=$db->where(['id'=>2])->delete();
$res=$db->delete(1);括號(hào)里是主鍵id的值;
如果where("1=1")的話會(huì)刪除所有記錄(慎用)只要where每次接收到的是true就可以;就會(huì)全部刪除
$res=$db->where("1=1")->delete( );
查看全部 -
update(' ');函數(shù) ?語(yǔ)法 更新數(shù)據(jù)
$res=$db->where(['id'=>幾幾幾])->update(['字段名'=>'更新內(nèi)容']); var_dump('res');
update(' '); 返回影像行數(shù)
setField(' ')函數(shù) 語(yǔ)法 更新某一條數(shù)據(jù)
$res=$db->where(['id'=>幾幾幾])->setField(['字段名'=>'更新內(nèi)容']); var_dump('res');
setField(' '); 返回影像行數(shù),每次只更新一個(gè)字段
setInc(' ')函數(shù) 語(yǔ)法 數(shù)量+1
$res=$db->where(['id'=>幾幾幾])-setInc('num'); var_dump('res');
#setInc('某個(gè)字段') ? 返回影像行數(shù),每執(zhí)行一次,都加1 ?通常用于新聞瀏覽數(shù)
setDec(' ')函數(shù) 語(yǔ)法 數(shù)量-1
$res=$db->where(['id'=>幾幾幾])-setDec('num'); var_dump('res');
#setInc('某個(gè)字段') ? 返回影像行數(shù),每執(zhí)行一次,都減1 ?通常用于新聞瀏覽數(shù)
查看全部 -
$db = Db::name('user'); #insert 返回值是影響記錄的行數(shù),插入數(shù) #insetGetId 返回值插入數(shù)據(jù)的自增id #insertAll 返回插入數(shù)據(jù)成功的行數(shù) // $res = $db->insert([ // 'email' ? => 'imooc_02', // 'password' ?=> md5('imooc_02'), // 'username' ?=> 'imooc_02' // ]); // $res = $db->insertGetId([ // 'email' ? => 'imooc_03@qq.com', // 'password' ?=> md5('imooc_03'), // 'username' ?=> 'imooc_03' // ]); $data = []; for($i=10; $i<20; $i++) { $data[] = [ 'email' ? => "imooc_03_{$i}@qq.com", 'password' ? => md5("imooc_03_{$i}"), 'username' ? => "imooc_03_{$i}" ]; } $res = $db->insertAll($data); dump($res);
查看全部 -
#使用sql語(yǔ)句方式查詢數(shù)據(jù)庫(kù)
//$res = Db::query("select *from imooc_user where id=?",[1]);
$res =Db::execute("insert into imooc_user set username=?,password?,email=?",['imooc',md5('imooc'),'imooc@qq.com']);
#selsect 返回所有記錄 返回的結(jié)果是一個(gè)二維數(shù)組
#如果結(jié)果不存在 返回一個(gè)空數(shù)組
$res = Db::table('imooc_user')->select();
#find 返回一條記錄 返回的結(jié)果是一個(gè)二維數(shù)組
#如果結(jié)果不存在返回NULL
$res = Db::table('imooc_user')->where(['id'=>10])->find();
#value ?返回一條記錄 并且是每條記錄的某個(gè)字段值
#如果結(jié)果不存在 返回NULL
$res = Db::table('imooc_user')->value('username');
#column 返回一個(gè)一維數(shù)組 數(shù)組中的value值就是我們要獲取的列的值
#如果存在第二個(gè)參數(shù) 就返回這個(gè)數(shù)組并且用第二個(gè)參數(shù)的值作為key值
#如果不存在返回NULL
$res = Db::table('imooc_user')->column('username');
#find ?返回一條記錄 返回的結(jié)果是一個(gè)二維數(shù)組
#如果結(jié)果不存在 返回NULL
$res = Db::table('imooc_user')->find();
#value 返回一條記錄 并且是字條記錄的某個(gè)字段值
#如果結(jié)果不存在 返回NULL
$res = Db::table('imooc_user')->value('username');
$res = Db::name('user')->select();
實(shí)例化
$res = db('user',[],false)->find();
查看全部 -
修改數(shù)據(jù)庫(kù)配置的四種方式
1.可在config下的database.php返回配置信息,直接 Db::connect()(如果參數(shù)為空,那么會(huì)默認(rèn)使用database.php中的配置連接)
2.在方法里面引入 use think\Db;Db::connect(array);數(shù)組即數(shù)據(jù)庫(kù)連接配置
3.同樣是Db::connect("mysql://root:password@127.0.0.1:3306:/databasename#utf8"); ? ? ? ? ? ? ? ? ?//use think\Db?
4.在配置文件中,添加一個(gè)數(shù)組,Db::connect("數(shù)組鍵名");
//use think\Db查看全部 -
Db::方法 因?yàn)槭菃卫J?不會(huì)重復(fù)實(shí)例化 而用db駐守函數(shù)會(huì)每次實(shí)例化,消耗內(nèi)存,所以在后面加上false,這樣db('表名',[],false)就不會(huì)每次實(shí)例化了
查看全部 -
dsn方式連接數(shù)據(jù)庫(kù) 此方式優(yōu)先級(jí)高于單獨(dú)寫(xiě)的方式
Db::connect('dsn');
此時(shí)只是配置數(shù)據(jù)庫(kù) 并沒(méi)有鏈接
只有用刀query時(shí)才是鏈接數(shù)據(jù)庫(kù)
查看全部 -
全局添加更新時(shí)間需要在表中新建create_time和update_time字段,配置文件中設(shè)置“auto_timestamp"=>true,一般不開(kāi)啟這個(gè)功能,否則表中不存在該字段時(shí)會(huì)報(bào)錯(cuò),真正刪除需要把destroy方法或delete方法的第二個(gè)參數(shù)設(shè)置為true
use?think\Model; use?traits\model\SoftDelete; class?User?extends?Model{ ????use?SoftDelete;使用軟刪除 ????protected?$autoWriteTimestamp?=?true;//開(kāi)啟自動(dòng)更新時(shí)間 ????protected?$createTime?=?false;//設(shè)置為false代表不使用創(chuàng)建時(shí)間 ????protected?$updateTime?=?"update_at";//設(shè)置自定義更新時(shí)間的字段 ????protected?$deleteTime?=?"delete_at";//設(shè)置自定義的軟刪除字段 }
查看全部 -
<?php ????namespace?app\index\model; ????use?think\Model; ????class?User?extends?Model{ ????????protected?$auto?=?[ ????????????'time' ????????]; ????????protected?$insert?=?[ ????????????'time_insert' ????????]; ????????protected?$update?=?[ ????????????'time_update' ????????]; ????????public?function?setPasswordAttr($val,$data){ ????????????//第二個(gè)參數(shù)是數(shù)組數(shù)據(jù) ????????????return?$val.$data['email']; ????????????return?md5($val); ????????} ????????public?function?setTimeAttr(){ ????????????return?time(); ????????} ????????public?function?setTimeInsertAttr(){ ????????????return?time(); ????????} ????????public?function?setTimeUpdateAttr(){ ????????????return?time(); ????????} ????}
查看全部 -
可以在控制器里輸出模型定義好的內(nèi)容
查看全部
舉報(bào)