批改狀態(tài):未批改
老師批語(yǔ):
<?php namespace app\index\controller; use think\Controller; use app\index\model\Staff as StaffModel; use think\Db; use think\model\concern\SoftDelete; class Staff extends Controller { public function instance(StaffModel $staff)//依賴(lài)注入 { //$staff = new StaffModel();//模型實(shí)例化 dump($staff->getName());//查看模型名稱(chēng) $staff->name = 'peter'; $staff->sex = 0; $staff->age = 11; $staff->salary = 1578; $staff->save(); return '新增成功,id='.$staff->staff_id; } //模型查詢(xún) public function query() { //單挑記錄:get(主鍵/閉包) //閉包:匿名回調(diào)函數(shù),將函數(shù)作為參數(shù)進(jìn)行傳遞 // new StaffModel(); $staff = StaffModel::get(2); dump($staff); echo '<hr>'; var_dump($staff); echo '<hr>'; echo $staff['name'],'<br>'; echo $staff->name,'<br>'; //用閉包來(lái)創(chuàng)建查詢(xún)條件 $staff = StaffModel::get(function ($query){ $query->where('sex',0)->where('salary','>',8000); }); dump($staff); echo '<hr>'; //直接靜態(tài)調(diào)用Db類(lèi)的查詢(xún)構(gòu)造器進(jìn)行查詢(xún) //StaffModel == Db::table('staff') StaffModel::where('sex',0) ->where('salary','>',8000) ->find(); dump($staff); echo '<hr>'; //多條記錄查詢(xún):all(主鍵列表/閉包) //返回值是多個(gè)數(shù)組、對(duì)象數(shù)組 //$staff = StaffModel::all(); //$staff = StaffModel::all([1,2,4]); $staffs = StaffModel::all(function ($query){ $query->where('age','<',20)->where('salary','>',1000); }); dump($staffs); echo '<hr>'; foreach ($staffs as $staff){ echo '姓名'.$staff->name.'<br>'; echo '年寧'.$staff->age.'<br>'; echo '工資'.$staff->salary.'<hr>'; } //采用閉包來(lái)實(shí)現(xiàn)請(qǐng)求變量注入到閉包條件中 //$this->request:請(qǐng)求對(duì)象 $age = $this->request->param('age')?:20; $salary = $this->request->param('salary')?:1000; $staffs = StaffModel::all(function ($query) use ($age,$salary){ $query->where('age','<',$age)->where('salary','>',$salary); }); dump($staffs); } //模型更新操作 public function update() { $staff = StaffModel::get(10); $staff->name = '10hao'; $staff->save(); //靜態(tài)方法:update(數(shù)據(jù),條件,字段) // StaffModel::update( //// ['name'=>'十0號(hào)'], //// ['staff_id'=>2] //// ); //復(fù)雜更新 // StaffModel::update( // ['salary'=>\think\Db::raw('salary-2000')],//更新工資降低2000 // function ($query){ // $query->where('age','>',50);//獲取年齡大于50的信息 // } // ); //構(gòu)造器更新數(shù)據(jù) StaffModel::where('age','>',50) ->data(['salary'=>\think\Db::raw('salary-2000')]) ->update(); } //創(chuàng)建模型:添加數(shù)據(jù) public function create() { $data = [ 'name'=>'sss888', 'sex'=>'0', 'age'=>252, 'salary'=>8888 ]; //$field = ['name','age'];//限制傳入數(shù)據(jù)類(lèi)型 //StaffModel::create($data,$field); //用查詢(xún)構(gòu)造器來(lái)插入數(shù)據(jù) StaffModel::insert($data); } //模型刪除 public function delete() { //destroy(主鍵、主鍵列表、閉包) //StaffModel::destroy(31); //刪除條件推薦使用閉包 StaffModel::destroy(function ($query){ $query->where('age','>',55)->where('salary','>=',5000); }); //查詢(xún)器實(shí)現(xiàn)刪除 StaffModel::where('age','>',35)->delete(); } //軟刪除 public function softDelete() { StaffModel::destroy(30); //軟刪除的數(shù)據(jù)在普通查詢(xún)中不可見(jiàn) // $res = StaffModel::Where('staff_id > 25')->select(); // dump($res); //查看軟刪除的數(shù)據(jù) $res = StaffModel::withTrashed()->Where('staff_id > 25')->select(); //只查看軟刪除數(shù)據(jù) $res = StaffModel::onlyTrashed()->select(); dump($res); } //軟刪除恢復(fù) public function restore() { // StaffModel::update( // ['delete_time'=>0], // ['staff_id'=>30] // ); StaffModel::onlyTrashed() -> find(30)-> restore();//軟查詢(xún)并使用restorr恢復(fù)軟刪除數(shù)據(jù) } }
軟刪除恢復(fù)執(zhí)行的sql語(yǔ)句
UPDATE `staff` SET `delete_time` = 0 WHERE ( `staff_id` = 30 ) AND `delete_time` <> 0
本質(zhì)意義是將數(shù)據(jù)表中的delete_time重置或者更新為0
所以使用更新也可以實(shí)現(xiàn)軟恢復(fù)
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)