- 使用model 查詢數據,添加數據,修改數據,刪除數據
- 聚合操作
- 獲取器,修改器
- 自動添加時間戳(創建時間,修改時間)
- 軟刪除
1、使用model查詢數據
1 $res = User::get(1); //獲取主鍵為1的數據,得到的是一個對象 2 3 $res = $res->toArray(); //將對象轉化為數組 4 5 dump($res->name); //獲取 $res 里 name 字段的值 6 //使用閉包函數查詢 id=1 的記錄 7 $res = User::get(function($query){ 8 $query->where("id","eq",1) 9 ->field('name') 10 }); 11 $res = User::where("id",10)->value('name'); 12 $res = User::where("id",10)->field('name')->find(); 13 14 $res = User::column('email'); //查詢所有的 email 字段值 15 $res = User::where("id",">",5)->select(); //查詢所有id大於5的記錄 16 $res = User::all('1,2'); //查詢主鍵等於 1 或2 的記錄 17 foreach($res as $val) //轉化為數組 18 { 19 dump($val->toArray()); 20 } 21 //使用閉包函數查詢 id<5 的記錄 22 $res = User::get(function($query){ 23 $query->where("id","<",5) 24 ->field('name') 25 });
2、使用model添加數據
1 $res = User::create([ 2 'name' => 'yulong', 3 'pwd' => '123' 4 ],true); //第二個參數為true時,只添加數據表中已有的字段,不報錯,不寫則默認為false;;;true 也可以換成一個數組,數組里存放數據表中的字段,表示僅允許數組中的字段添加數據 5 $res->id; //本次添加的自增id 6 dump($res); 7 $usermodel = new User; 8 $res = $usermodel 9 ->allowField(true) //僅允許添加數據表中存在的字段,也可以寫成數組 10 ->save([ 11 'name' => 'yulong', 12 'pwd' => '123' 13 ]); 14 15 dump($res->id); //獲取新添加數據的自增id 16 $usermodel = new User; 17 $res = $usermodel->saveAll([ //一次保存多條數據 18 'name' => 'yulong001', 19 'name' => 'yulong002' 20 ]); 21 22 dump($ers);
3、使用model更新數據
1 $res = User::update([ 2 'name' => 'yulong002' 3 ],['id'=>1]); //更新 id=1 的記錄 4 5 $res = User::update([ 6 'name' => 'yulong002' 7 ],function(){ 8 $query->where("id","LT",5); //使用閉包函數更新 id<5 的記錄 9 }); 10 11 12 dump($res); 13 $res = User::where("id","<",6) //返回值是被更新數據的行數 14 ->update([ 15 'name' => 'hahahaha' 16 ]);
4、使用model刪除數據
1 $res = User::destriy(1); //刪除主鍵為1的記錄,返回影響數據的行數,也可以傳遞數組 2 3 4 $usermodel = User::get(1); 5 $res = $usermodel->delete(); 6 7 8 $res = User::where("id",5)->delete(); // where() 里面有三個參數, 字段值,條件,數值 9 10 dump($res);
5、使用model聚合操作
1 $res = User::where("id",">",5)->count(); //查詢id大於5的記錄條數 2 3 // max 可以換成其他的 如 min / sum / avg 4 $res = User::max('num'); //查詢 num 字段中的最大值 5 $res = User::where("id","<",5)->max('num'); //id<5 的記錄中的 num 最大值
6、使用模型獲取器
1 //model 2 //方法名: get字段名Attr 3 //controller中獲取原始數據使用 $res->getData() 4 5 public function getSexSttr($val){ 6 switch($val){ 7 case '1': 8 return "男"; 9 break; 10 case '2'; 11 return '女'; 12 break; 13 default: 14 return '未知'; 15 break; 16 } 17 }
7、使用模型修改器
1 //model 修改器命名 set字段名Attr 2 //修改器作用:在往數據庫添加字段時,控制器中寫未處理的數據,在模型中的修改器中寫處理數據的方法,這樣添加到數據庫中的數據就是處理過得數據了 3 public function setPwdAttr($val){ 4 return md5($val); 5 } 6 7 8 // $val代表 pwd 字段,$data代表接收到的所有數據 ,返回的值就是 pwd+email 9 public function setPwdAttr($val,$data){ 10 return $val.$data['email']; 11 }
8、自動往數據庫中添加時間戳
1 //自動往 time 字段中加入時間戳 2 public function setTimeAttr(){ 3 return time(); 4 } 5 6 //在數據添加時發生改變 7 protected $insert = [ 'time_insert' ]; //設置字段 8 public function setTimeInsertAttr(){ //將字段值設置為當前時間 9 return time(); 10 } 11 12 //在更新數據時發生改變 13 protected $update = [ 'time_update' ]; //設置字段 14 public function setTimeUpdateAttr(){ //將字段值設置為當前時間 15 return time(); 16 }
9、model時間戳
1 // 數據庫中的字段 create_time update_time 2 // database.php 中更改配置 'auto_timeStamp' => true 3 // 不推薦使用此方法,因為如果你的數據庫表中沒有 對應的字段 ,程序可能就會報錯 4 // 可以單獨在 某個模型中 添加屬性 5 6 protected $autoWriteTimeStamp = true; //開啟自動加入時間戳 7 8 protected $createTime = 'create_at'; //設置 創建的時候寫入 的字段 ,值可以為false,關閉操作 9 protedted $updateTime = 'update_at'; //設置 創建和更新的時候寫入 的字段 ,值可以為false,關閉操作
10、軟刪除
1 // model 2 // 數據表中的字段 delete_time,默認值可以為 null 3 4 use traits\model\SoftDelete; //使用軟刪除的類 5 6 class User extends Model 7 { 8 use SoftDelete; //在類的開頭 use SoftDelete; 9 protected $deleteTime = 'delete_at'; //設置軟刪除的字段,默認為 delete_time 10 } 11 12 13 $res = User::destroy(3,true); //刪除主鍵為3的記錄,第二個參數為 true 時,不是軟刪除,是tm真刪了 14 15 $ress = User::get(4); 16 $res = $ress->delete(true); // delete() 沒值時,為軟刪除;值為true,tm的真刪 17 18 // controller 獲取到 軟刪除 的記錄 19 $res = User::withTrashed(true)->find(1); //得到id為1 的經過軟刪除 刪除的記錄 20 dump($res->getData()); //獲取原始數據 21 22 $res = User::onlyTrashed()->select(); //獲取所有軟刪除的數據
over!over!over!