老莫的笔记本  
  
查看: 1248|回复: 4

TP5 模型中的CURD

[复制链接]

662

主题

878

帖子

5141

积分

超级版主

Rank: 8Rank: 8

积分
5141
发表于 2018-8-12 23:43:59 | 显示全部楼层 |阅读模式
1.创建数据
    1.1 save($data=[]) ----   说明: 添加单条    ---- 调用方式:实例化 ---- 返回值:影响记录数;
    1.2 saveAll($data=[]) ----   说明: 批量添加    ---- 调用方式:实例化 ---- 返回值:模型对象数组;
    1.3 create($data=[]) ----   说明: 添加单条    ---- 调用方式:静态调用 ---- 返回值:模型对象;【 以后常用就是这个 因为更为简洁】
  1. <?php
  2. namespace app\articles\controller;
  3. use app\articles\model\Staff;  //先引入 staff 类;
  4. header("Content-type: text/html; charset=utf-8");
  5. class Dbm
  6. {
  7.     public function mm1()
  8.     {
  9.         return '哥又进来了    }
  10.     // 单条添加
  11.     public function mm2()
  12.     {
  13.         $staff = new Staff();
  14.         $lma = $staff->save($data=[
  15.             'name'=>'小二黑',
  16.             'gongzi'=>3600,
  17.             'juese'=>'研发部实习生',
  18.             'age' => 26,
  19.         ]);
  20.         return $lma?'小二黑成功入职':'刘静看不上小二黑    }
  21.     // 在视频中 他不是这么加的  上面是我自己的写法 视频上加变量采取的是对象的写法
  22.     public function mm22()
  23.     {
  24.         // 1.实例化
  25.         $staff = new Staff();
  26.         // 2.创建数据,采用对象的方式
  27.         $staff -> name = '胡章俊        $staff -> age = 13;
  28.         $staff -> juese = '第三组组长        $staff -> gongzi = 13000 ;
  29.         // 3 .执行添加操作
  30.         $lma = $staff->save();
  31.         return $lma?'胡工成功入职':'刘静看不上胡工        
  32.     }
  33.     // 实例化群组添加
  34.     public function mm3()
  35.     {
  36.         $staff = new Staff();
  37.         $lma = $staff->saveAll($data=[
  38.                 ['name'=>'杨大','gongzi'=>6500,'juese'=>'市场部主管','age'=>28],
  39.                 ['name'=>'杨二','gongzi'=>4500,'juese'=>'市场部主管','age'=>28],
  40.             ]);
  41.         return $lma?'刘静又收了两个人':'老板不想收人了'; // 这里返回的是个模型对象数组 我这不该用return
  42.     }
  43.     // 在视频中,他也不是这么批量添加的 他用了对象数组
  44.      public function mm33()
  45.     {
  46.         $staff = new Staff();
  47.         $data = [
  48.             ['name'=>'杨5','gongzi'=>1500,'juese'=>'市场部','age'=>21],
  49.             ['name'=>'杨6','gongzi'=>2500,'juese'=>'市场部','age'=>22],
  50.         ];
  51.         $lma = $staff->saveAll($data);
  52.        dump($lma);
  53.     }
  54.     // 静态调用  注意 返回的是个模型对象
  55.     public function mm4()
  56.     {
  57.         $lma = Staff::create($data=[
  58.             'name'=>'徐巧慧',
  59.             'gongzi'=>3600,
  60.             'juese'=>'研发部实习生',
  61.             'age' => 28,
  62.         ]);
  63.         dump($lma->getData());
  64.         
  65.     }
  66. }
复制代码

回复

使用道具 举报

662

主题

878

帖子

5141

积分

超级版主

Rank: 8Rank: 8

积分
5141
 楼主| 发表于 2018-8-13 07:11:39 | 显示全部楼层
本帖最后由 周大胖子 于 2018-8-13 07:36 编辑

2.模型对象中的更新操作
    1. save($data=[],$where=[]) ------ 单条更新 ------ 实例化 ------返回受影响的记录数;
    2. saveAll($data=[],true) -----------批量更新------ 实例化 -------返回模型对象数组;
    3. update($data=[],$where=[],$field=[])-------单条更新------ 静态------返回模型对象;  【参数说明:更新数据,更新条件,允许更新的字段】
【规定】
     1. 不允许无条件更新,必须规定更新条件;
     2.可以将更新条件,如主键写在更新数据中,方法可以自动认别;【老莫的疑问?那除主键以外的更新条件呢】
     3.更新条件可以使用闭包,完成更为复杂的业务逻辑;
  1.     // 以下是更新操作
  2.     public function mm5()
  3.     {
  4.         // 1.实例化
  5.         $staff = new Staff();
  6.         // 3 .执行更新操作
  7.         $lma = $staff->save($data=['gongzi'=>1300],$where=['id'=>17]);
  8.         return $lma?'老胡被扣工资了':'老胡没有被扣        
  9.     }
  10.     // 看教程发现我上当了,人家前面有一个 isupdata()
  11.     public function mm55()
  12.     {
  13.         // 1.实例化
  14.         $staff = new Staff();
  15.         $data = [
  16.             'id'=>17,
  17.             'gongzi'=>1500,
  18.         ];
  19.         $lma = $staff->isUpdate(true)->save($data);
  20.         dump($lma);
  21.         
  22.     }
  23.      public function mm555()
  24.     {
  25.         // 1.实例化
  26.         $staff = new Staff();
  27.         $data = [
  28.             'gongzi'=>5300,
  29.         ];
  30.         $where =[
  31.             'id'=>17,
  32.         ];
  33.         $lma = $staff->save($data,$where);
  34.         return $lma?'胡工又增加工资了':'老板太抠了
  35.         
  36.     }
  37.     // 以下是批量更新操作
  38.      public function mm6()
  39.     {
  40.         // 1.实例化
  41.         $staff = new Staff();
  42.         // 3 .执行更新操作
  43.         $lma = $staff->save($data=['gongzi'=>1300],$where=['id'=>17]);
  44.         return $lma?'老胡被扣工资了':'老胡没有被扣        
  45.     }
  46.      public function mm66()
  47.     {
  48.         $staff = new Staff();
  49.         $data = [
  50.             ['id'=>17,'gongzi'=>3500],
  51.             ['id'=>23,'gongzi'=>13500],
  52.             ['id'=>24,'gongzi'=>32500],
  53.         ];
  54.         
  55.         $lma = $staff->isUpdate(true)->saveAll($data);
  56.        // return $lma?'老胡被扣工资了':'老胡没有被扣        dump($lma);
  57.     }
  58.     // 静态更新操作
  59.     public function mm7()
  60.     {
  61.         $data =[
  62.             'name'=>'小金',
  63.             'juese'=>'研发部实习生',
  64.         ];
  65.         $where =[
  66.             'id'=>24,
  67.         ];
  68.         $lma = Staff::update($data,$where);
  69.         dump($lma->getData());
  70.         
  71.     }
  72.     public function mm77()
  73.     {
  74.         $data =[
  75.             'name'=>'金2',
  76.             'juese'=>'研发部实习生',
  77.             'gongzi'=>2500,
  78.         ];
  79.         $where =[
  80.             'id'=>24,
  81.         ];
  82.         $field =[
  83.             'name',
  84.             'gongzi',
  85.         ];
  86.         $lma = Staff::update($data,$where,$field);
  87.         dump($lma->getData());
  88.         
  89.     }
  90.     // 更新操作分为两种,第一种是查询更新,先从数据表中赋值给属性,然后更新,另一种就是直接更新
复制代码
  1. public function mm777()
  2.     {
  3.         $data =[
  4.             'name'=>'金2',
  5.             'juese'=>'研发部实习生',
  6.             'gongzi'=>2500,
  7.         ];
  8.         // 闭包的写法
  9.         $where =function($query){
  10.             $query->where('id',17);
  11.         };  
  12.         $field =[
  13.             'name',
  14.             'gongzi',
  15.         ];
  16.         $lma = Staff::update($data,$where,$field);
  17.         dump($lma->getData());
  18.         
  19.     }
  20.     public function mm7777($id)
  21.     {
  22.         $data =[
  23.             'name'=>'金2',
  24.             'juese'=>'研发部实习生',
  25.             'gongzi'=>2500,
  26.         ];
  27.         // 闭包的写法
  28.         $where =function($query) use($id){
  29.             $query->where('id',$id);
  30.         };  
  31.         $field =[
  32.             'name',
  33.             'gongzi',
  34.         ];
  35.         $lma = Staff::update($data,$where,$field);
  36.         dump($lma->getData());
  37.         
  38.     }
复制代码

回复

使用道具 举报

662

主题

878

帖子

5141

积分

超级版主

Rank: 8Rank: 8

积分
5141
 楼主| 发表于 2018-8-13 21:50:05 | 显示全部楼层
3.Read 读取操作
【先来个我没闹明白的概念】什么是ORM模型【对象关系映射】???? 【我擦  我总结下  就是通过操纵模型对象 来操作数据库】      1. find($where) 和 get($where) ------ 调用方式: 实例化and静态 ------ 返回值: 模型对象
      2. select($where) 和 all($where) ------ 调用方式: 实例化and静态 ------ 返回值: 模型对象数组
【龟腚】
    1. 原则来说,查询都应该采用静态查询方法;
    2. 尽可能采用 get() 和 all() 方法代替find() 和 select();
    3. 牢记一条原则: 一个模型对象实例应当唯一对应数据表的一条记录;
  1.     // 查询操作
  2.     public function mm8()
  3.     {
  4.        // $lma = Staff::find(16);
  5.        $lma = Staff::get(15);
  6.         dump($lma);
  7.     }
  8.     // 实例化版本
  9.     public function mm82()
  10.     {
  11.         $staff = new Staff;
  12.         $where = function ($query)
  13.         {
  14.             $query->field(['name'=>'姓名','gongzi'=>'工资'])->where('id','=',13);
  15.         };
  16.         $lma = $staff->get($where);
  17.         dump($lma->getData());
  18.     }
  19.     // 改动版  [记得用这个版本 别的不管]
  20.     public function mm81()
  21.     {
  22.         $where = function ($query){
  23.             $query->field(['name'=>'姓名','gongzi'=>'工资'])     // 这是别名的写法 也可以直接写(['name','gongzi'])
  24.             ->where('id','=',14);
  25.         };
  26.         $lma = staff::get($where);
  27.         dump($lma->getData());
  28.     }
  29.     //  批量查询操作
  30.      public function mm9()
  31.     {
  32.        // $lma = Staff::select([17,18,19]);
  33.        $lma = Staff::all([17,18,19,22]);
  34.         dump($lma);
  35.     }
  36.     // 批量查询并把值存到数组中
  37.      public function mm91()
  38.     {
  39.         $where = function ($query){
  40.             $query->field(['name','gongzi'])
  41.             ->where('id','>',24);
  42.         };
  43.         $lma = staff::all($where);
  44.         $a=array();
  45.         // dump($lma->getData()); // 注意这个写法是错的 ->getData()  这个就是错的 奇怪
  46.         // 由于得到的是对象数组 ,所以要遍历
  47.         foreach ($lma as $key => $value) {
  48.             // dump($value->getData());
  49.             array_push($a,$value->getData());
  50.         }
  51.         dump($a);
  52.         // return sizeof($a);  // 获取数组的长度
  53.     }
复制代码

回复

使用道具 举报

662

主题

878

帖子

5141

积分

超级版主

Rank: 8Rank: 8

积分
5141
 楼主| 发表于 2018-8-13 22:24:57 | 显示全部楼层
4.Delete 删除操作
方法:
delete() ------ 调用方式:实例化 ------ 返回值:受影响的记录数量;
destroy(条件/闭包) ------ 调用方式:静态调用 [可以批量删除 也可以单个删除]------ 返回值: 受影响的记录数量;
【龟腚】
    1. delete() 方法不要传入任何参数,它只删除当前模型对象对应的记录;
    2. destroy() 中的删除条件,推荐采用闭包方式;
    3. 推荐用软删除来替代该方法,即用更新的方式来实现删除操作;
  1.     // 下面是删除操作 这个
  2.    
  3.      public function md11()
  4.     {
  5.        //  说好的实例化呢?? 就这么演示?  哥 你是来搞笑的嘛
  6.         $lma = Staff::get(24);
  7.         $a = $lma->delete();
  8.         dump($a);
  9.     }
  10.      public function md2()
  11.     {
  12.         $where = function ($query){
  13.             $query->where('id','>',20)
  14.                -> where('age','<',18)
  15.                -> whereOr('gongzi','<',2000);
  16.         };
  17.        // $lma = Staff::all($where);
  18.        //  $a=array();
  19.         // foreach ($lma as $key => $value) {
  20.        //      array_push($a,$value->getData());
  21.        //  }
  22.        //  dump($a);
  23.        $lma = Staff::destroy($where);
  24.        dump($lma);
  25.     }
复制代码


回复

使用道具 举报

662

主题

878

帖子

5141

积分

超级版主

Rank: 8Rank: 8

积分
5141
 楼主| 发表于 2018-8-13 22:25:40 | 显示全部楼层
贴一下全部代码 万一哪天我忘了多尴尬
  1. <?php
  2. namespace app\articles\controller;
  3. use app\articles\model\Staff;  //先引入 staff 类;
  4. header("Content-type: text/html; charset=utf-8");
  5. class Dbm
  6. {
  7.     public function mm1()
  8.     {
  9.         return '哥又进来了    }
  10.     // 单条添加
  11.     public function mm2()
  12.     {
  13.         $staff = new Staff();
  14.         $lma = $staff->save($data=[
  15.             'name'=>'小二黑',
  16.             'gongzi'=>3600,
  17.             'juese'=>'研发部实习生',
  18.             'age' => 26,
  19.         ]);
  20.         return $lma?'小二黑成功入职':'刘静看不上小二黑    }
  21.     // 在视频中 他不是这么加的  上面是我自己的写法 视频上加变量采取的是对象的写法
  22.     public function mm22()
  23.     {
  24.         // 1.实例化
  25.         $staff = new Staff();
  26.         // 2.创建数据,采用对象的方式
  27.         $staff -> name = '胡章俊        $staff -> age = 13;
  28.         $staff -> juese = '第三组组长        $staff -> gongzi = 13000 ;
  29.         // 3 .执行添加操作
  30.         $lma = $staff->save();
  31.         return $lma?'胡工成功入职':'刘静看不上胡工        
  32.     }
  33.     // 实例化群组添加
  34.     public function mm3()
  35.     {
  36.         $staff = new Staff();
  37.         $lma = $staff->saveAll($data=[
  38.                 ['name'=>'杨大','gongzi'=>6500,'juese'=>'市场部主管','age'=>28],
  39.                 ['name'=>'杨二','gongzi'=>4500,'juese'=>'市场部主管','age'=>28],
  40.             ]);
  41.         return $lma?'刘静又收了两个人':'老板不想收人了'; // 这里返回的是个模型对象数组 我这不该用return
  42.     }
  43.     // 在视频中,他也不是这么批量添加的 他用了对象数组
  44.      public function mm33()
  45.     {
  46.         $staff = new Staff();
  47.         $data = [
  48.             ['name'=>'杨5','gongzi'=>1500,'juese'=>'市场部','age'=>21],
  49.             ['name'=>'杨6','gongzi'=>2500,'juese'=>'市场部','age'=>22],
  50.         ];
  51.         $lma = $staff->saveAll($data);
  52.        dump($lma);
  53.     }
  54.     // 静态调用  注意 返回的是个模型对象
  55.     public function mm4()
  56.     {
  57.         $lma = Staff::create($data=[
  58.             'name'=>'徐巧慧',
  59.             'gongzi'=>3600,
  60.             'juese'=>'研发部实习生',
  61.             'age' => 28,
  62.         ]);
  63.         dump($lma->getData());
  64.         
  65.     }
  66.     // 以下是更新操作
  67.     public function mm5()
  68.     {
  69.         // 1.实例化
  70.         $staff = new Staff();
  71.         // 3 .执行更新操作
  72.         $lma = $staff->save($data=['gongzi'=>1300],$where=['id'=>17]);
  73.         return $lma?'老胡被扣工资了':'老胡没有被扣        
  74.     }
  75.     // 看教程发现我上当了,人家前面有一个 isupdata()
  76.     public function mm55()
  77.     {
  78.         // 1.实例化
  79.         $staff = new Staff();
  80.         $data = [
  81.             'id'=>17,
  82.             'gongzi'=>1500,
  83.         ];
  84.         $lma = $staff->isUpdate(true)->save($data);
  85.         dump($lma);
  86.         
  87.     }
  88.      public function mm555()
  89.     {
  90.         // 1.实例化
  91.         $staff = new Staff();
  92.         $data = [
  93.             'gongzi'=>5300,
  94.         ];
  95.         $where =[
  96.             'id'=>17,
  97.         ];
  98.         $lma = $staff->save($data,$where);
  99.         return $lma?'胡工又增加工资了':'老板太抠了
  100.         
  101.     }
  102.     // 以下是批量更新操作
  103.      public function mm6()
  104.     {
  105.         // 1.实例化
  106.         $staff = new Staff();
  107.         // 3 .执行更新操作
  108.         $lma = $staff->save($data=['gongzi'=>1300],$where=['id'=>17]);
  109.         return $lma?'老胡被扣工资了':'老胡没有被扣        
  110.     }
  111.      public function mm66()
  112.     {
  113.         $staff = new Staff();
  114.         $data = [
  115.             ['id'=>17,'gongzi'=>3500],
  116.             ['id'=>23,'gongzi'=>13500],
  117.             ['id'=>24,'gongzi'=>32500],
  118.         ];
  119.         
  120.         $lma = $staff->isUpdate(true)->saveAll($data);
  121.        // return $lma?'老胡被扣工资了':'老胡没有被扣        dump($lma);
  122.     }
  123.     // 静态更新操作
  124.     public function mm7()
  125.     {
  126.         $data =[
  127.             'name'=>'小金',
  128.             'juese'=>'研发部实习生',
  129.         ];
  130.         $where =[
  131.             'id'=>24,
  132.         ];
  133.         $lma = Staff::update($data,$where);
  134.         dump($lma->getData());
  135.         
  136.     }
  137.     public function mm77()
  138.     {
  139.         $data =[
  140.             'name'=>'金2',
  141.             'juese'=>'研发部实习生',
  142.             'gongzi'=>2500,
  143.         ];
  144.         $where =[
  145.             'id'=>24,
  146.         ];
  147.         $field =[
  148.             'name',
  149.             'gongzi',
  150.         ];
  151.         $lma = Staff::update($data,$where,$field);
  152.         dump($lma->getData());
  153.         
  154.     }
  155.     public function mm777()
  156.     {
  157.         $data =[
  158.             'name'=>'金2',
  159.             'juese'=>'研发部实习生',
  160.             'gongzi'=>2500,
  161.         ];
  162.         // 闭包的写法
  163.         $where =function($query){
  164.             $query->where('id',17);
  165.         };  
  166.         $field =[
  167.             'name',
  168.             'gongzi',
  169.         ];
  170.         $lma = Staff::update($data,$where,$field);
  171.         dump($lma->getData());
  172.         
  173.     }
  174.     public function mm7777($id)
  175.     {
  176.         $data =[
  177.             'name'=>'金2',
  178.             'juese'=>'研发部实习生',
  179.             'gongzi'=>2500,
  180.         ];
  181.         // 闭包的写法
  182.         $where =function($query) use($id){
  183.             $query->where('id',$id);
  184.         };  
  185.         $field =[
  186.             'name',
  187.             'gongzi',
  188.         ];
  189.         $lma = Staff::update($data,$where,$field);
  190.         dump($lma->getData());
  191.         
  192.     }
  193.     // 更新操作分为两种,第一种是查询更新,先从数据表中赋值给属性,然后更新,另一种就是直接更新
  194.    
  195.     // 查询操作
  196.     public function mm8()
  197.     {
  198.        // $lma = Staff::find(16);
  199.        $lma = Staff::get(15);
  200.         dump($lma);
  201.     }
  202.     // 实例化版本
  203.     public function mm82()
  204.     {
  205.         $staff = new Staff;
  206.         $where = function ($query)
  207.         {
  208.             $query->field(['name'=>'姓名','gongzi'=>'工资'])->where('id','=',13);
  209.         };
  210.         $lma = $staff->get($where);
  211.         dump($lma->getData());
  212.     }
  213.     // 改动版  [记得用这个版本 别的不管]
  214.     public function mm81()
  215.     {
  216.         $where = function ($query){
  217.             $query->field(['name'=>'姓名','gongzi'=>'工资'])     // 这是别名的写法 也可以直接写(['name','gongzi'])
  218.             ->where('id','=',14);
  219.         };
  220.         $lma = staff::get($where);
  221.         dump($lma->getData());
  222.     }
  223.     //  批量查询操作
  224.      public function mm9()
  225.     {
  226.        // $lma = Staff::select([17,18,19]);
  227.        $lma = Staff::all([17,18,19,22]);
  228.         dump($lma);
  229.     }
  230.     // 批量查询并把值存到数组中
  231.      public function mm91()
  232.     {
  233.         $where = function ($query){
  234.             $query->field(['name','gongzi'])
  235.             ->where('id','>',24);
  236.         };
  237.         $lma = staff::all($where);
  238.         $a=array();
  239.         // dump($lma->getData()); // 注意这个写法是错的 ->getData()  这个就是错的 奇怪
  240.         // 由于得到的是对象数组 ,所以要遍历
  241.         foreach ($lma as $key => $value) {
  242.             // dump($value->getData());
  243.             array_push($a,$value->getData());
  244.         }
  245.         dump($a);
  246.         // return sizeof($a);  // 获取数组的长度
  247.     }
  248.     // 下面是删除操作 这个
  249.    
  250.      public function md11()
  251.     {
  252.        //  说好的实例化呢?? 就这么演示?  哥 你是来搞笑的嘛
  253.         $lma = Staff::get(24);
  254.         $a = $lma->delete();
  255.         dump($a);
  256.     }
  257.      public function md2()
  258.     {
  259.         $where = function ($query){
  260.             $query->where('id','>',20)
  261.                -> where('age','<',18)
  262.                -> whereOr('gongzi','<',2000);
  263.         };
  264.        // $lma = Staff::all($where);
  265.        //  $a=array();
  266.         // foreach ($lma as $key => $value) {
  267.        //      array_push($a,$value->getData());
  268.        //  }
  269.        //  dump($a);
  270.        $lma = Staff::destroy($where);
  271.        dump($lma);
  272.     }
  273. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表