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 }