thinkphp5.0 模型的应用

  1 <?php
  2 namespace app\admin\controller;
  3 use app\common\controller\BaseController;
  4 use think\Db;//数据库操作类
  5 use app\admin\model\Show as s; //引入自己创建的模型
  6 use think\Loader;//模型类集合
  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 think\Loader,其他共有,适用于多个模型
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 app\admin\model;
 3 use think\Model;
 4 use traits\model\SoftDelete;//软删除
 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 }

 

 

posted @ 2017-12-16 16:37  1O(∩_∩)O1  阅读(324)  评论(0编辑  收藏  举报