TP5框架model常見(jiàn)操作示例小結(jié)【增刪改查、聚合、時(shí)間戳、軟刪除等】
本文實(shí)例講述了TP5框架model常見(jiàn)操作。分享給大家供大家參考,具體如下:
- 使用model 查詢(xún)數(shù)據(jù),添加數(shù)據(jù),修改數(shù)據(jù),刪除數(shù)據(jù)
- 聚合操作
- 獲取器,修改器
- 自動(dòng)添加時(shí)間戳(創(chuàng)建時(shí)間,修改時(shí)間)
- 軟刪除
1、使用model查詢(xún)數(shù)據(jù)
$res = User::get(1); //獲取主鍵為1的數(shù)據(jù),得到的是一個(gè)對(duì)象 $res = $res->toArray(); //將對(duì)象轉(zhuǎn)化為數(shù)組 dump($res->name); //獲取 $res 里 name 字段的值
//使用閉包函數(shù)查詢(xún) id=1 的記錄 $res = User::get(function($query){ $query->where("id","eq",1) ->field('name') });
$res = User::where("id",10)->value('name'); $res = User::where("id",10)->field('name')->find(); $res = User::column('email'); //查詢(xún)所有的 email 字段值 $res = User::where("id",">",5)->select(); //查詢(xún)所有id大于5的記錄
$res = User::all('1,2'); //查詢(xún)主鍵等于 1 或2 的記錄 foreach($res as $val) //轉(zhuǎn)化為數(shù)組 { dump($val->toArray()); }
//使用閉包函數(shù)查詢(xún) id<5 的記錄 $res = User::get(function($query){ $query->where("id","<",5) ->field('name') });
2、使用model添加數(shù)據(jù)
$res = User::create([ 'name' => 'yulong', 'pwd' => '123' ],true); //第二個(gè)參數(shù)為true時(shí),只添加數(shù)據(jù)表中已有的字段,不報(bào)錯(cuò),不寫(xiě)則默認(rèn)為false;;;true 也可以換成一個(gè)數(shù)組,數(shù)組里存放數(shù)據(jù)表中的字段,表示僅允許數(shù)組中的字段添加數(shù)據(jù) $res->id; //本次添加的自增id dump($res);
$usermodel = new User; $res = $usermodel ->allowField(true) //僅允許添加數(shù)據(jù)表中存在的字段,也可以寫(xiě)成數(shù)組 ->save([ 'name' => 'yulong', 'pwd' => '123' ]); dump($res->id); //獲取新添加數(shù)據(jù)的自增id
$usermodel = new User; $res = $usermodel->saveAll([ //一次保存多條數(shù)據(jù) 'name' => 'yulong001', 'name' => 'yulong002' ]); dump($ers);
3、使用model更新數(shù)據(jù)
$res = User::update([ 'name' => 'yulong002' ],['id'=>1]); //更新 id=1 的記錄 $res = User::update([ 'name' => 'yulong002' ],function(){ $query->where("id","LT",5); //使用閉包函數(shù)更新 id<5 的記錄 }); dump($res);
$res = User::where("id","<",6) //返回值是被更新數(shù)據(jù)的行數(shù) ->update([ 'name' => 'hahahaha' ]);
4、使用model刪除數(shù)據(jù)
$res = User::destriy(1); //刪除主鍵為1的記錄,返回影響數(shù)據(jù)的行數(shù),也可以傳遞數(shù)組 $usermodel = User::get(1); $res = $usermodel->delete(); $res = User::where("id",5)->delete(); // where() 里面有三個(gè)參數(shù), 字段值,條件,數(shù)值 dump($res);
5、使用model聚合操作
$res = User::where("id",">",5)->count(); //查詢(xún)id大于5的記錄條數(shù) // max 可以換成其他的 如 min / sum / avg $res = User::max('num'); //查詢(xún) num 字段中的最大值 $res = User::where("id","<",5)->max('num'); //id<5 的記錄中的 num 最大值
6、使用模型獲取器
//model //方法名: get字段名Attr //controller中獲取原始數(shù)據(jù)使用 $res->getData() public function getSexSttr($val){ switch($val){ case '1': return "男"; break; case '2'; return '女'; break; default: return '未知'; break; } }
7、使用模型修改器
//model 修改器命名 set字段名Attr //修改器作用:在往數(shù)據(jù)庫(kù)添加字段時(shí),控制器中寫(xiě)未處理的數(shù)據(jù),在模型中的修改器中寫(xiě)處理數(shù)據(jù)的方法,這樣添加到數(shù)據(jù)庫(kù)中的數(shù)據(jù)就是處理過(guò)得數(shù)據(jù)了 public function setPwdAttr($val){ return md5($val); } // $val代表 pwd 字段,$data代表接收到的所有數(shù)據(jù) ,返回的值就是 pwd+email public function setPwdAttr($val,$data){ return $val.$data['email']; }
8、自動(dòng)往數(shù)據(jù)庫(kù)中添加時(shí)間戳
//自動(dòng)往 time 字段中加入時(shí)間戳 public function setTimeAttr(){ return time(); } //在數(shù)據(jù)添加時(shí)發(fā)生改變 protected $insert = [ 'time_insert' ]; //設(shè)置字段 public function setTimeInsertAttr(){ //將字段值設(shè)置為當(dāng)前時(shí)間 return time(); } //在更新數(shù)據(jù)時(shí)發(fā)生改變 protected $update = [ 'time_update' ]; //設(shè)置字段 public function setTimeUpdateAttr(){ //將字段值設(shè)置為當(dāng)前時(shí)間 return time(); }
9、model時(shí)間戳
// 數(shù)據(jù)庫(kù)中的字段 create_time update_time // database.php 中更改配置 'auto_timeStamp' => true // 不推薦使用此方法,因?yàn)槿绻愕臄?shù)據(jù)庫(kù)表中沒(méi)有 對(duì)應(yīng)的字段 ,程序可能就會(huì)報(bào)錯(cuò) // 可以單獨(dú)在 某個(gè)模型中 添加屬性 protected $autoWriteTimeStamp = true; //開(kāi)啟自動(dòng)加入時(shí)間戳 protected $createTime = 'create_at'; //設(shè)置 創(chuàng)建的時(shí)候?qū)懭?的字段 ,值可以為false,關(guān)閉操作 protedted $updateTime = 'update_at'; //設(shè)置 創(chuàng)建和更新的時(shí)候?qū)懭?的字段 ,值可以為false,關(guān)閉操作
10、軟刪除
// model // 數(shù)據(jù)表中的字段 delete_time,默認(rèn)值可以為 null use traits\model\SoftDelete; //使用軟刪除的類(lèi) class User extends Model { use SoftDelete; //在類(lèi)的開(kāi)頭 use SoftDelete; protected $deleteTime = 'delete_at'; //設(shè)置軟刪除的字段,默認(rèn)為 delete_time } $res = User::destroy(3,true); //刪除主鍵為3的記錄,第二個(gè)參數(shù)為 true 時(shí),不是軟刪除,是tm真刪了 $ress = User::get(4); $res = $ress->delete(true); // delete() 沒(méi)值時(shí),為軟刪除;值為true,tm的真刪 // controller 獲取到 軟刪除 的記錄 $res = User::withTrashed(true)->find(1); //得到id為1 的經(jīng)過(guò)軟刪除 刪除的記錄 dump($res->getData()); //獲取原始數(shù)據(jù) $res = User::onlyTrashed()->select(); //獲取所有軟刪除的數(shù)據(jù)
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《ThinkPHP入門(mén)教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門(mén)教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門(mén)教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
- Thinkphp5.0框架使用模型Model的獲取器、修改器、軟刪除數(shù)據(jù)操作示例
- Thinkphp5.0 框架使用模型Model添加、更新、刪除數(shù)據(jù)操作詳解
- Thinkphp5.0 框架Model模型簡(jiǎn)單用法分析
- thinkphp5 模型實(shí)例化獲得數(shù)據(jù)對(duì)象的教程
- ThinkPHP5&5.1框架關(guān)聯(lián)模型分頁(yè)操作示例
- Thinkphp5.0框架的Db操作實(shí)例分析【連接、增刪改查、鏈?zhǔn)讲僮鞯取?/a>
- ThinkPHP5.1框架數(shù)據(jù)庫(kù)鏈接和增刪改查操作示例
- tp5(thinkPHP5)框架數(shù)據(jù)庫(kù)Db增刪改查常見(jiàn)操作總結(jié)
相關(guān)文章
PHP設(shè)計(jì)模式(五)適配器模式Adapter實(shí)例詳解【結(jié)構(gòu)型】
這篇文章主要介紹了PHP設(shè)計(jì)模式:適配器模式Adapter,結(jié)合實(shí)例形式詳細(xì)分析了PHP適配器模式Adapter基本概念、功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05Laravel中ServiceProvider使用場(chǎng)景示例詳解
這篇文章主要為大家介紹了Laravel中ServiceProvider使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06thinkphp制作404跳轉(zhuǎn)頁(yè)的簡(jiǎn)單實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇thinkphp制作404跳轉(zhuǎn)頁(yè)的簡(jiǎn)單實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09laravel自定義分頁(yè)的實(shí)現(xiàn)案例offset()和limit()
今天小編就為大家分享一篇laravel自定義分頁(yè)的實(shí)現(xiàn)案例offset()和limit(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10iis 7下安裝laravel 5.4環(huán)境的方法教程
最近想嘗試體驗(yàn)下laravel框架,所以自己嘗試在iis 7下安裝laravel 5.4環(huán)境,雖然遇到些問(wèn)題,但最終都解決了,所以下面這篇文章主要給大家介紹了在iis 7下安裝laravel 5.4環(huán)境的方法教程,需要的朋友可以參考下。2017-06-06