zoukankan      html  css  js  c++  java
  • thinkphp5.0 模型的应用

      1 <?php
      2 namespace appadmincontroller;
      3 use appcommoncontrollerBaseController;
      4 use thinkDb;//数据库操作类
      5 use appadminmodelShow as s; //引入自己创建的模型
      6 use thinkLoader;//模型类集合
      7 
      8 class Show extends BaseController{
      9 
     10     public function message(){
     11         $where = array();
     12         $list = Db::name('show')->where($where)->select();
     13         $cout = Db::name("show") ->count();
     14 
     15         foreach($list as $k => &$v){
     16             $v['show_image_scr'] = $v['show_image_scr'];
     17             $v['show_time'] = date("Y-m-d H:i",$v['show_time']);
     18         }
     19         $this->assign('list',$list);
     20         $this->assign("cout",$cout);
     21         return $this->fetch();
     22     }
     23 
     24     public  function  addImage(){
     25         if(IS_POST)
     26         {
     27             $file = request()->file('img');
     28             if($file)
     29             {
     30                 $str = HOMEPAGE_PATH. 'admin';
     31                 $info = $file->rule('uniqid')->validate(['size'=>956780,'ext'=> IMAGE_SUFFIX])->move($str,true,false);
     32                 if($info){
     33                     // 成功上传后 获取上传信息
     34                     // 输出 jpg
     35 //                    echo $info->getExtension();
     36                     // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
     37                     $imgName = $info->getSaveName();
     38                     // 输出 42a79759f284b767dfcb2a0197904287.jpg
     39 //                    $info->getFilename();
     40 
     41 
     42                     $str = HOMEPAGE_PATH.DS.$imgName;
     43                     $title = input('post.title');
     44                     $content = input('post.content');
     45                     $data = array();
     46                     $data['show_image_scr'] = $str;//绝对路径->相对路径
     47                     $data['show_title'] = $title;
     48                     $data['show_content'] = $content;
     49                     $data['show_time'] = time();
     50                     $info = Db::name('show') ->insert($data);
     51                     if($info == 1){
     52                              $this->success('上传成功',url('admin/show/message'));
     53                     }else{
     54                         $this->error('上传失败',url('admin/show/message'));
     55                     }
     56                 }else{
     57                     // 上传失败获取错误信息
     58                     echo $file->getError();
     59                 }
     60             }
     61         }
     62         else
     63         {
     64             $where = array();
     65 //            $where['show_id'] = 1;
     66 //              var_dump(Db::connect());//查看数据库配置
     67 
     68 //              $res = Db::query('select * from fanke_show where show_id = ?',[1]);//使用sql语句查询
     69 //              $res = db::name('show',[],false) -> where($where) -> select();//在数据库里面已经输入了前缀,在第三个参数传人false,则不会再每次调用的时候实例化
     70 
     71 //              $res = Db::execute('insert into fanke_show set show_id=?,show_image_scr=?,show_title=?,show_content=?,show_time=? ',
     72 //                  [
     73 //                      '2',
     74 //                      'http://www.qq.com',
     75 //                      '对!就是你',
     76 //                      "你很帅帅!",
     77 //                      22
     78 //                  ]);//使用sql语句插入数据
     79 
     80 //               $res = Db::table('fanke_show') -> where($where) -> select();//select 返回所有的记录 返回值得结果是一个二维数组
     81 //               $res = Db::table('fanke_show') -> where($where) -> find();//find 返回一条的记录 返回值得结果是一个一维数组,如果结果不存在,则返回null
     82 
     83 //               $res = Db::table('fanke_show') -> where($where) -> value('show_title');//value 返回的是一条记录 并且是字段记录的某个字段值 不存在的话则返回null
     84 //               $res = Db::table('fanke_show') -> where($where) -> column('show_title','show_title');//column 返回的是一维数组 数组里面的value值就是我们要获取的列的值 不存在的话则返回null
     85 //----------------------------------------添加数据---------------------------------------------------------
     86 //                 $db = db::name('show');//这是方法我之前什么没有想到呢
     87                 //insert 插入数据 放回插入的行数
     88                 //insertGetId  插入数据 返回插入的行数和自增id
     89                 //insertAll  一次插入多条数据,返回插入成功的行数
     90 
     91 
     92 //                 $where = null;
     93 //                    $where['show_image_scr'] = '你';
     94 //                    $where['show_title'] = '很';
     95 //                    $where['show_content'] = '帅';
     96 //                    $where['show_time'] = 333;
     97 //
     98 //                 $res = $db -> insert($where);//插入数据 放回插入的行数
     99 //                 $res = $db -> insertGetId($where);//插入数据 返回插入的行数和自增id
    100 
    101 //                    $data = [];
    102 //                   for($i = 0; $i<9;$i++){
    103 //                        $data[$i] = $where;
    104 //                     }
    105 
    106 //                   $res = $db -> insertAll($data); //一次插入多条数据,返回插入成功的行数
    107 
    108 //--------------------------------数据库更新----------------------------------------------------------
    109 //            $db = db::name('show');
    110             //update 更新一条数据 返回的是行数
    111             //setField 只更新一个字段
    112             //setInc 自增加  默认值为1, 返回的是影响的行数
    113             //setDec 自减少 默认值为1 ,返回的是影响的行数
    114 
    115 //            update
    116 //            $res = $db ->where([
    117 //                'show_id' => 1
    118 //            ]) -> update([
    119 //                'show_image_scr' => '123',
    120 //                'show_title' => '123',
    121 //                'show_content' => '123',
    122 //                'show_time' => '123'
    123 //            ]);
    124 
    125             //setField
    126 //            $res = $db -> where([
    127 //                'show_id' => 5
    128 //            ]) -> setField(
    129 //                'show_title','我是谁?');
    130 
    131               //setInc
    132 //            $res = $db ->where([
    133 //                'show_id' => 8
    134 //            ])->setInc('show_time',5);
    135 
    136             //setDec
    137 //            $res = $db ->where([
    138 //                'show_id' => 8
    139 //            ])->setDec('show_time',5);
    140 
    141 //--------------------------------数据删除----------------------------------------------------------
    142             //delete 删除一条数据 返回影响行数 如果你的条件是主键的话,可以直接在delete()方法传递数据
    143 //             $res = $db -> where([
    144 //                 'show_id' => 10
    145 //             ])->delete();
    146 
    147 //            $res = $db ->delete(11);
    148 
    149 //            $res = $db -> where(['1=1']) -> delete();//删除全部数据
    150 
    151 //--------------------------------条件构造器---------------------------------------------------------
    152             //buildSql 返回sql输出语句  最后看会条件构造的视频
    153             //EQ =
    154             //NEQ <>
    155             //GT >
    156             //GET >=
    157             //BETWEEN BETWEEW * AND *  之间
    158             //NOTBETWEEN NOTBETWEEN *AND* 不在这之间
    159             //IN IN(*,*)
    160             //NOTIN NOT IN(*,*)
    161 //            $res = $db -> where([
    162 //                'show_id' => ['get',[1,10]],   //and
    163 //                'show_title' => '很'
    164 //            ])-> buildSql();
    165 
    166 
    167 //--------------------------------链式操作---------------------------------------------
    168             //看回视频吧
    169             //field
    170             //order
    171             //limit
    172             //page
    173 //            $res = $db
    174 //                -> where('show_time','eq','333')
    175 //                -> field('show_title')
    176 //                -> limit(4,5)
    177 //                -> select();
    178 
    179 
    180 //----------------------------------模型----------------------------------------------
    181             //获取模型
    182             //最好使用前两种方式,这样可读性更高
    183 //              $res = s::get(3);//第一种
    184 
    185 //              $show = new s;//第二种
    186 //              $res = $show::get(1);
    187 
    188 //              $show = Loader::model('show');//第三种方法 以上两个都要use他们的模型,这个不用,只要use thinkLoader,其他共有,适用于多个模型
    189 //              $res = $show::get(1);
    190 
    191 //              $show = model("show"); //这个不用use任何东西
    192 //              $res = $show::get(6);
    193 
    194 
    195 
    196 //-------------------------------模型查询数据--------------------------------------------------
    197 //              查询单条数据
    198 //              $res = s::get(2);
    199 //              var_dump($res -> show_title);
    200 
    201 //              查询单条数据
    202 //               $res = s::get(function($query){
    203 //                   $query -> where('show_id','eq','5')
    204 //                          -> field('show_id');
    205 //               });
    206 
    207 //              查询单条数据
    208 //               $res = s::where('show_id',2)
    209 //                   ->field('show_id')
    210 //                   ->find();
    211 
    212 //            查询多条数据
    213 //             $where = array();
    214 //             $where['show_id'] = 2;
    215 //             $res = s::all($where);
    216 //            foreach($res as $k => $v)
    217 //            {
    218 //               $v = $v -> toArray();
    219 //                var_dump($v);
    220 //            }
    221 
    222 //            查询多条数据
    223 //            $res = s::all(function($query){
    224 //                //这里面添加条件即可,不用select和find
    225 //                $query -> where('show_id','<',5);
    226 //            });
    227 //            foreach($res as $k => $v)
    228 //            {
    229 //               $v = $v -> toArray();
    230 //                var_dump($v);
    231 //            }
    232 
    233             //查询多条数据
    234 //               $res = s::where('show_id','>',2)
    235 //                   ->field('show_id')
    236 //                   ->select();
    237 //            foreach($res as $k => $v)
    238 //            {
    239 //               $v = $v -> toArray();
    240 //                var_dump($v);
    241 //            }
    242 
    243             //得到单条数据的字段
    244 //            $res = s::where(['show_id'=>1])->value('show_title');
    245 
    246             //得到多条数据的字段  第二个参数是设置下标key
    247 //            $res = s::column('show_content',"show_title");
    248 //-----------------------添加数据--------------------------
    249             //方法一  添加单条数据
    250 //            $where = array();
    251 //            $where['show_title'] = '我是谁';
    252 //            $where['show_content'] = '我在哪里';
    253 //            $where['show_time'] = 123456789;
    254 //            $res = s::create($where,true);//true 将不是数据库的字段自动排除/如果是['show_title','show_content'] 他只会添加这两个字段的数据
    255 
    256             //方法二 添加单条数据
    257 //            $show = new s;
    258 //            $show -> show_title = '来';
    259 //            $show -> show_content = '这';
    260 //            $show -> show_time = 123;
    261 //            $res = $show -> save();
    262 
    263             //方法三 添加单条数据
    264 //            $show = new s;
    265 //            //allowField() 将不是数据库的字段自动排除/如果是['show_title','show_content'] 他只会添加这两个字段的数据
    266 //            $res = $show -> allowField(true) -> save($where);
    267 
    268             //添加多条数据 返回model对象 二维数组
    269 //            $show = new s;
    270 //            $res = $show -> saveAll([
    271 //               ['show_title'=>'我哈哈'],
    272 //                ['show_title'=>'百事可乐']
    273 //            ]);
    274 //            foreach($res as $k=>$v){
    275 //                 var_dump($v ->toArray());
    276 //            }
    277 
    278 //------------------------更新数据------------------------------------------
    279             //只是更新一些简单的数据才这样,因为更新两次的返回值都一样,所以无法判断是否更新
    280             // 只要存在主键,就不必写条件
    281 //            $res = s::update([
    282 //                'show_id' => '20',
    283 //                'show_title' => '6666',
    284 //                'show_content' => '77777',
    285 //                'show_time' => '8888'
    286 //            ]);
    287 
    288 //            $res = s::update([
    289 //                'show_title' => '6666',
    290 //                'show_content' => '77777',
    291 //                'show_time' => '8888'
    292 //            ],['show_id'=>5]);
    293 
    294 //            $res = s::update([
    295 //                'show_title' => '6666',
    296 //                'show_content' => '77777',
    297 //                'show_time' => '8888'
    298 //            ],function($query){
    299 //                $query -> where('show_id','<',5);
    300 //            });
    301 
    302             //更新二 更新了就会返回影响的行数,否则就返回0
    303 //            $res = s::where('show_id','eq',5)
    304 //                -> update([
    305 //                    'show_title' => '我是方法二'
    306 //                ]);
    307 
    308             //更新三 更新了就会返回影响的行数,否则就返回0
    309 //            $model = s::get(1);//获取数据模型
    310 //            $model -> show_title = '123';//更改数值
    311 //            $res = $model -> save();//自动更新
    312 
    313             //更新四 第二个参数是用于选择的
    314 //            $show = new s;
    315 //            $res = $show -> save([
    316 //               "show_title" => '你妹的'
    317 //            ],[
    318 //                    'show_id' => 1
    319 //                ]
    320 //                );
    321 
    322             //更新五 第二个参数是用于选择的
    323 //            $show = new s;
    324 //            $res = $show -> save([
    325 //               "show_title" => '你妹的'
    326 //            ],function($query){
    327 //                $query -> where('show_id','<',3);
    328 //            }
    329 //                );
    330 
    331 
    332 //----------------------------删除数据----------------------------------------
    333             //方法一
    334 //            $res = s::destroy(1);
    335 //            方法二
    336 //            $res = s::destroy(['show_id'=> 2]);
    337             //方法三 批量删除
    338 //            $res = s::destroy(function($query){
    339 //                $query -> where("show_id",'>',5);
    340 //            });
    341 //            方法四
    342 //            $model = s::get(5);
    343 //            $res = $model -> delete();
    344             //方法五
    345 //            $res = s::where('show_id',5)->delete();
    346 
    347 
    348 //------------------------------模型聚合操作-------------------------------------------
    349 //            max 最大值
    350 //            min 最小值
    351 //            sum 总和
    352 //            avg 中间值
    353 
    354 //            $data = [];
    355 //            for($i=1;$i<10;$i++)
    356 //            {
    357 //                $data[] = [
    358 //                    "show_image_scr" => "我是".$i,
    359 //                    "show_title" => "我是标题".$i,
    360 //                    "show_content" => "我是内容".$i,
    361 //                    "show_time" => $i*1000
    362 //                ];
    363 //            }
    364 //            $show = new s;
    365 //            $res = $show -> saveAll($data);
    366 //            ---------------------- 一点关系都没有 --------------------------
    367 
    368 //                 $res = s::max('show_id');
    369 
    370 //                 $res = s::sum('show_id');
    371 
    372 //                 $res = s::avg('show_id');
    373 
    374 //                 $res = s::min('show_id');
    375 
    376 //               $res = $res -> toArray();
    377 //            ------------------------模型获取器---------------------------
    378             //需要对模型进行改写
    379 
    380 //                $res = s::get(8);
    381 
    382 //              $res -> show_sex;//model类改写过getShowSexAttr()方法
    383 
    384 //            var_dump($res -> toArray());//这里已经是应该model修改后的数据了
    385 //            var_dump($res -> getData());//获取原始数据
    386 
    387 
    388 //           -----------------------模型的修改 + 自动完成-----------------------
    389             //修改需要再model里面编写
    390 //            $res = s::create([
    391 //                "show_title" => '123',
    392 //                'show_content' => '321',
    393 //                "show_image_scr" => '123',
    394 //                'show_time' => '123',
    395 //                'show_sex' => 1
    396 //            ]);
    397 //            var_dump($res -> toArray());
    398 
    399 
    400 //            --------------------模型时间戳-------------------
    401 //              具体的请查看model->show
    402 
    403 
    404 //            -----------------数据软删除---------------------
    405 //            $res = s::destroy(7);
    406 //            var_dump($res);
    407 //            //已经不能获取这条数据了
    408 //            $res = s::get(7);
    409 //            var_dump($res);//null
    410 //            //如果真的要获取这条记录的话,可以:
    411 //            $res = s::withTrashed(true)->find(7);
    412 //            var_dump($res->getData());//获取原始数据
    413             //我们删除的数据都在垃圾箱中,如果想要获取垃圾箱的全部数据,可以:
    414 //            $res = s::onlyTrashed() -> select();
    415 //           foreach($res as $k => $v)
    416 //           {
    417 //              var_dump($v -> getData());
    418 //           }
    419             //如果我们真的要删除的话
    420             //方法一
    421 //            $res = s::destroy(7,true);
    422 //            var_dump($res);
    423             //方法二
    424 //            $show = s::get(8);
    425 //            $res = $show->destroy(true);
    426 
    427 //            return $this -> fetch();
    428 
    429         }
    430     }
    431 
    432 }
     1 <?php
     2 namespace appadminmodel;
     3 use thinkModel;
     4 use traitsmodelSoftDelete;//软删除
     5 
     6 class Show extends Model
     7 {
     8      //名字规则  imooc_user -> User.php   User
     9      //          imooc_user_info -> UserInfo.php  UserInfo
    10 
    11 
    12 //    -------------------自动更新--------------------
    13 //    //自动更新  自动触发  数据自动完成需要修改器配合才能完成操作
    14 //      protected $auto = [
    15 //           //当数据写入,他会自动实行,达到自动的操作
    16 //          //实行的是setShowTimeAttr()方法
    17 //          'show_time'
    18 //      ];
    19 //
    20 //     protected  $insert =[
    21 //         //当数据新增,他会自动实行,达到自动的操作
    22 //
    23 //     ];
    24 //
    25 //    protected  $update = [
    26 //        //当数据更新,他会自动实行,达到自动的操作
    27 //    ];
    28 
    29 
    30 
    31 //    -------------------模型获取器----------------------
    32 //get set 是不同的     get只是对读取出来的数据进行处理,并不改变他原来的值,     set是直接改变他原来的值,然后直接存入数据库
    33 //      public function getShowSexAttr($val)//方法名是固定的: get + 字段名 + Attr
    34 //      {
    35 //         switch($val)
    36 //         {
    37 //             case $val == 1:
    38 //                 return '男';
    39 //                 break;
    40 //             case $val == 2:
    41 //                 return '女';
    42 //                 break;
    43 //             case $val == 0:
    44 //                 return "保密";
    45 //                 break;
    46 //         }
    47 //      }
    48 
    49 //      ---------------模型修改器-------------------
    50 //    public function setShowTitleAttr($val,$data)//方法名是固定的: set + 字段名 + Attr
    51 //    {
    52 //        //$data 就是插入的全部数据
    53 ////        return md5($val);
    54 //        //用其他字段值代替show_title
    55 //        return $data['show_content'];
    56 //    }
    57 
    58 //    public  function setShowTimeAttr($val)
    59 //    {
    60 //        return time();
    61 //
    62 //    }
    63 
    64 
    65 //------------------模型时间戳-----------------------
    66     //方法一
    67       // 自动写入时间戳字段  false -> true   不建议开启这个功能
    68       //'auto_timestamp'  => true,
    69     //当字段必须是create_time 和 update_time ,不然就会报错
    70 
    71     //方法二   推荐使用这个方法
    72 //     protected  $autoWriteTimestamp = true;
    73 //     protected  $createTime = 'create_at';  //当为 false的时候,则不会设置,自动关闭
    74 //     protected  $updateTime = 'update_at';
    75 
    76 
    77 //     -------------------软删除-------------------
    78            use SoftDelete;
    79     //如果不是delete_time这个默认字段,可以修改其他名字:
    80 //    protected  $deleteTime = 'delete_as';
    81 
    82 }
  • 相关阅读:
    package相关知识
    【算法设计与分析】5个数7次比较排序的算法
    Android下的应用编程——用HTTP协议实现文件上传功能
    5个数通过7次比较排序的方法
    数据库范式(1NF、2NF、3NF、BCNF)
    HttpDownloader2011年09月20日 写好用于下载的类 并且封装好
    POJ 1692 DP
    POJ 1682 多重DP
    TYVJ 1744 逆序对数(加强版)
    POJ 2151 概率DP
  • 原文地址:https://www.cnblogs.com/laijinquan/p/8046943.html
Copyright © 2011-2022 走看看