TP5之model


  • 使用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!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM