<?php
namespace app\admin\controller;
use app\common\controller\BaseController;
use think\Db;//数据库操作类
use app\admin\model\Show as s; //引入自己创建的模型
use think\Loader;//模型类集合 class Show extends BaseController{ public function message(){
$where = array();
$list = Db::name('show')->where($where)->select();
$cout = Db::name("show") ->count(); foreach($list as $k => &$v){
$v['show_image_scr'] = $v['show_image_scr'];
$v['show_time'] = date("Y-m-d H:i",$v['show_time']);
}
$this->assign('list',$list);
$this->assign("cout",$cout);
return $this->fetch();
} public function addImage(){
if(IS_POST)
{
$file = request()->file('img');
if($file)
{
$str = HOMEPAGE_PATH. 'admin';
$info = $file->rule('uniqid')->validate(['size'=>956780,'ext'=> IMAGE_SUFFIX])->move($str,true,false);
if($info){
// 成功上传后 获取上传信息
// 输出 jpg
// echo $info->getExtension();
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
$imgName = $info->getSaveName();
// 输出 42a79759f284b767dfcb2a0197904287.jpg
// $info->getFilename(); $str = HOMEPAGE_PATH.DS.$imgName;
$title = input('post.title');
$content = input('post.content');
$data = array();
$data['show_image_scr'] = $str;//绝对路径->相对路径
$data['show_title'] = $title;
$data['show_content'] = $content;
$data['show_time'] = time();
$info = Db::name('show') ->insert($data);
if($info == 1){
$this->success('上传成功',url('admin/show/message'));
}else{
$this->error('上传失败',url('admin/show/message'));
}
}else{
// 上传失败获取错误信息
echo $file->getError();
}
}
}
else
{
$where = array();
// $where['show_id'] = 1;
// var_dump(Db::connect());//查看数据库配置 // $res = Db::query('select * from fanke_show where show_id = ?',[1]);//使用sql语句查询
// $res = db::name('show',[],false) -> where($where) -> select();//在数据库里面已经输入了前缀,在第三个参数传人false,则不会再每次调用的时候实例化 // $res = Db::execute('insert into fanke_show set show_id=?,show_image_scr=?,show_title=?,show_content=?,show_time=? ',
// [
// '2',
// 'http://www.qq.com',
// '对!就是你',
// "你很帅帅!",
// 22
// ]);//使用sql语句插入数据 // $res = Db::table('fanke_show') -> where($where) -> select();//select 返回所有的记录 返回值得结果是一个二维数组
// $res = Db::table('fanke_show') -> where($where) -> find();//find 返回一条的记录 返回值得结果是一个一维数组,如果结果不存在,则返回null // $res = Db::table('fanke_show') -> where($where) -> value('show_title');//value 返回的是一条记录 并且是字段记录的某个字段值 不存在的话则返回null
// $res = Db::table('fanke_show') -> where($where) -> column('show_title','show_title');//column 返回的是一维数组 数组里面的value值就是我们要获取的列的值 不存在的话则返回null
//----------------------------------------添加数据---------------------------------------------------------
// $db = db::name('show');//这是方法我之前什么没有想到呢
//insert 插入数据 放回插入的行数
//insertGetId 插入数据 返回插入的行数和自增id
//insertAll 一次插入多条数据,返回插入成功的行数 // $where = null;
// $where['show_image_scr'] = '你';
// $where['show_title'] = '很';
// $where['show_content'] = '帅';
// $where['show_time'] = 333;
//
// $res = $db -> insert($where);//插入数据 放回插入的行数
// $res = $db -> insertGetId($where);//插入数据 返回插入的行数和自增id // $data = [];
// for($i = 0; $i<9;$i++){
// $data[$i] = $where;
// } // $res = $db -> insertAll($data); //一次插入多条数据,返回插入成功的行数 //--------------------------------数据库更新----------------------------------------------------------
// $db = db::name('show');
//update 更新一条数据 返回的是行数
//setField 只更新一个字段
//setInc 自增加 默认值为1, 返回的是影响的行数
//setDec 自减少 默认值为1 ,返回的是影响的行数 // update
// $res = $db ->where([
// 'show_id' => 1
// ]) -> update([
// 'show_image_scr' => '123',
// 'show_title' => '123',
// 'show_content' => '123',
// 'show_time' => '123'
// ]); //setField
// $res = $db -> where([
// 'show_id' => 5
// ]) -> setField(
// 'show_title','我是谁?'); //setInc
// $res = $db ->where([
// 'show_id' => 8
// ])->setInc('show_time',5); //setDec
// $res = $db ->where([
// 'show_id' => 8
// ])->setDec('show_time',5); //--------------------------------数据删除----------------------------------------------------------
//delete 删除一条数据 返回影响行数 如果你的条件是主键的话,可以直接在delete()方法传递数据
// $res = $db -> where([
// 'show_id' => 10
// ])->delete(); // $res = $db ->delete(11); // $res = $db -> where(['1=1']) -> delete();//删除全部数据 //--------------------------------条件构造器---------------------------------------------------------
//buildSql 返回sql输出语句 最后看会条件构造的视频
//EQ =
//NEQ <>
//GT >
//GET >=
//BETWEEN BETWEEW * AND * 之间
//NOTBETWEEN NOTBETWEEN *AND* 不在这之间
//IN IN(*,*)
//NOTIN NOT IN(*,*)
// $res = $db -> where([
// 'show_id' => ['get',[1,10]], //and
// 'show_title' => '很'
// ])-> buildSql(); //--------------------------------链式操作---------------------------------------------
//看回视频吧
//field
//order
//limit
//page
// $res = $db
// -> where('show_time','eq','333')
// -> field('show_title')
// -> limit(4,5)
// -> select(); //----------------------------------模型----------------------------------------------
//获取模型
//最好使用前两种方式,这样可读性更高
// $res = s::get(3);//第一种 // $show = new s;//第二种
// $res = $show::get(1); // $show = Loader::model('show');//第三种方法 以上两个都要use他们的模型,这个不用,只要use think\Loader,其他共有,适用于多个模型
// $res = $show::get(1); // $show = model("show"); //这个不用use任何东西
// $res = $show::get(6); //-------------------------------模型查询数据--------------------------------------------------
// 查询单条数据
// $res = s::get(2);
// var_dump($res -> show_title); // 查询单条数据
// $res = s::get(function($query){
// $query -> where('show_id','eq','5')
// -> field('show_id');
// }); // 查询单条数据
// $res = s::where('show_id',2)
// ->field('show_id')
// ->find(); // 查询多条数据
// $where = array();
// $where['show_id'] = 2;
// $res = s::all($where);
// foreach($res as $k => $v)
// {
// $v = $v -> toArray();
// var_dump($v);
// } // 查询多条数据
// $res = s::all(function($query){
// //这里面添加条件即可,不用select和find
// $query -> where('show_id','<',5);
// });
// foreach($res as $k => $v)
// {
// $v = $v -> toArray();
// var_dump($v);
// } //查询多条数据
// $res = s::where('show_id','>',2)
// ->field('show_id')
// ->select();
// foreach($res as $k => $v)
// {
// $v = $v -> toArray();
// var_dump($v);
// } //得到单条数据的字段
// $res = s::where(['show_id'=>1])->value('show_title'); //得到多条数据的字段 第二个参数是设置下标key
// $res = s::column('show_content',"show_title");
//-----------------------添加数据--------------------------
//方法一 添加单条数据
// $where = array();
// $where['show_title'] = '我是谁';
// $where['show_content'] = '我在哪里';
// $where['show_time'] = 123456789;
// $res = s::create($where,true);//true 将不是数据库的字段自动排除/如果是['show_title','show_content'] 他只会添加这两个字段的数据 //方法二 添加单条数据
// $show = new s;
// $show -> show_title = '来';
// $show -> show_content = '这';
// $show -> show_time = 123;
// $res = $show -> save(); //方法三 添加单条数据
// $show = new s;
// //allowField() 将不是数据库的字段自动排除/如果是['show_title','show_content'] 他只会添加这两个字段的数据
// $res = $show -> allowField(true) -> save($where); //添加多条数据 返回model对象 二维数组
// $show = new s;
// $res = $show -> saveAll([
// ['show_title'=>'我哈哈'],
// ['show_title'=>'百事可乐']
// ]);
// foreach($res as $k=>$v){
// var_dump($v ->toArray());
// } //------------------------更新数据------------------------------------------
//只是更新一些简单的数据才这样,因为更新两次的返回值都一样,所以无法判断是否更新
// 只要存在主键,就不必写条件
// $res = s::update([
// 'show_id' => '20',
// 'show_title' => '6666',
// 'show_content' => '77777',
// 'show_time' => '8888'
// ]); // $res = s::update([
// 'show_title' => '6666',
// 'show_content' => '77777',
// 'show_time' => '8888'
// ],['show_id'=>5]); // $res = s::update([
// 'show_title' => '6666',
// 'show_content' => '77777',
// 'show_time' => '8888'
// ],function($query){
// $query -> where('show_id','<',5);
// }); //更新二 更新了就会返回影响的行数,否则就返回0
// $res = s::where('show_id','eq',5)
// -> update([
// 'show_title' => '我是方法二'
// ]); //更新三 更新了就会返回影响的行数,否则就返回0
// $model = s::get(1);//获取数据模型
// $model -> show_title = '123';//更改数值
// $res = $model -> save();//自动更新 //更新四 第二个参数是用于选择的
// $show = new s;
// $res = $show -> save([
// "show_title" => '你妹的'
// ],[
// 'show_id' => 1
// ]
// ); //更新五 第二个参数是用于选择的
// $show = new s;
// $res = $show -> save([
// "show_title" => '你妹的'
// ],function($query){
// $query -> where('show_id','<',3);
// }
// ); //----------------------------删除数据----------------------------------------
//方法一
// $res = s::destroy(1);
// 方法二
// $res = s::destroy(['show_id'=> 2]);
//方法三 批量删除
// $res = s::destroy(function($query){
// $query -> where("show_id",'>',5);
// });
// 方法四
// $model = s::get(5);
// $res = $model -> delete();
//方法五
// $res = s::where('show_id',5)->delete(); //------------------------------模型聚合操作-------------------------------------------
// max 最大值
// min 最小值
// sum 总和
// avg 中间值 // $data = [];
// for($i=1;$i<10;$i++)
// {
// $data[] = [
// "show_image_scr" => "我是".$i,
// "show_title" => "我是标题".$i,
// "show_content" => "我是内容".$i,
// "show_time" => $i*1000
// ];
// }
// $show = new s;
// $res = $show -> saveAll($data);
// ---------------------- 一点关系都没有 -------------------------- // $res = s::max('show_id'); // $res = s::sum('show_id'); // $res = s::avg('show_id'); // $res = s::min('show_id'); // $res = $res -> toArray();
// ------------------------模型获取器---------------------------
//需要对模型进行改写 // $res = s::get(8); // $res -> show_sex;//model类改写过getShowSexAttr()方法 // var_dump($res -> toArray());//这里已经是应该model修改后的数据了
// var_dump($res -> getData());//获取原始数据 // -----------------------模型的修改 + 自动完成-----------------------
//修改需要再model里面编写
// $res = s::create([
// "show_title" => '123',
// 'show_content' => '321',
// "show_image_scr" => '123',
// 'show_time' => '123',
// 'show_sex' => 1
// ]);
// var_dump($res -> toArray()); // --------------------模型时间戳-------------------
// 具体的请查看model->show // -----------------数据软删除---------------------
// $res = s::destroy(7);
// var_dump($res);
// //已经不能获取这条数据了
// $res = s::get(7);
// var_dump($res);//null
// //如果真的要获取这条记录的话,可以:
// $res = s::withTrashed(true)->find(7);
// var_dump($res->getData());//获取原始数据
//我们删除的数据都在垃圾箱中,如果想要获取垃圾箱的全部数据,可以:
// $res = s::onlyTrashed() -> select();
// foreach($res as $k => $v)
// {
// var_dump($v -> getData());
// }
//如果我们真的要删除的话
//方法一
// $res = s::destroy(7,true);
// var_dump($res);
//方法二
// $show = s::get(8);
// $res = $show->destroy(true); // return $this -> fetch(); }
} }
 <?php
namespace app\admin\model;
use think\Model;
use traits\model\SoftDelete;//软删除 class Show extends Model
{
//名字规则 imooc_user -> User.php User
// imooc_user_info -> UserInfo.php UserInfo // -------------------自动更新--------------------
// //自动更新 自动触发 数据自动完成需要修改器配合才能完成操作
// protected $auto = [
// //当数据写入,他会自动实行,达到自动的操作
// //实行的是setShowTimeAttr()方法
// 'show_time'
// ];
//
// protected $insert =[
// //当数据新增,他会自动实行,达到自动的操作
//
// ];
//
// protected $update = [
// //当数据更新,他会自动实行,达到自动的操作
// ]; // -------------------模型获取器----------------------
//get set 是不同的 get只是对读取出来的数据进行处理,并不改变他原来的值, set是直接改变他原来的值,然后直接存入数据库
// public function getShowSexAttr($val)//方法名是固定的: get + 字段名 + Attr
// {
// switch($val)
// {
// case $val == 1:
// return '男';
// break;
// case $val == 2:
// return '女';
// break;
// case $val == 0:
// return "保密";
// break;
// }
// } // ---------------模型修改器-------------------
// public function setShowTitleAttr($val,$data)//方法名是固定的: set + 字段名 + Attr
// {
// //$data 就是插入的全部数据
//// return md5($val);
// //用其他字段值代替show_title
// return $data['show_content'];
// } // public function setShowTimeAttr($val)
// {
// return time();
//
// } //------------------模型时间戳-----------------------
//方法一
// 自动写入时间戳字段 false -> true 不建议开启这个功能
//'auto_timestamp' => true,
//当字段必须是create_time 和 update_time ,不然就会报错 //方法二 推荐使用这个方法
// protected $autoWriteTimestamp = true;
// protected $createTime = 'create_at'; //当为 false的时候,则不会设置,自动关闭
// protected $updateTime = 'update_at'; // -------------------软删除-------------------
use SoftDelete;
//如果不是delete_time这个默认字段,可以修改其他名字:
// protected $deleteTime = 'delete_as'; }

thinkphp5.0 模型的应用的更多相关文章

  1. ThinkPHP5.0 模型查询操作

    1.获取单个数据 //取出主键为1的数据 $user = User::get(1); echo $user->name; // 使用数组查询 $user = User::get(['name' ...

  2. Thinkphp5.0 模型hasOne、hasMany、belongsTo详解

    ThinkPHP5有关联模型的操作,但有部分初学者对数据表中常见的几种表与表的关系还存在着问题,所以使用不好关联查询. 这里将hasOne.hasMany.belongsTo进行一个详细举例说明. 首 ...

  3. ThinkPhp5.0模型验证规则

    Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...

  4. Thinkphp5.0 的使用模型Model的获取器与修改器

    Thinkphp5.0 的使用模型Model的获取器.修改器.软删除 一.获取器 在model中使用 get+字段名+Attr,可以修改字段的返回值. 数据库中性别保存为,0未知.1男.2女,查询时返 ...

  5. Thinkphp5.0 的使用模型Model删除数据

    Thinkphp5.0 的使用模型Model删除数据 一.使用destory()删除数据 //删除id为3的记录 $res = User::destroy(3); //返回影响的行数 dump($re ...

  6. Thinkphp5.0 的使用模型Model更新数据

    Thinkphp5.0 的使用模型Model更新数据 (1)使用update()方法进行更新数据 一.where条件写在更新数据中 (这种情况更新的数据,必须含主键) $res = User::upd ...

  7. Thinkphp5.0 的使用模型Model添加数据

    Thinkphp5.0 的使用模型Model添加数据 使用create()方法添加数据 $res = TestUser::create([ 'name' => 'zhao liu', 'pass ...

  8. Thinkphp5.0 的使用模型Model查询

    Thinkphp5.0 的使用模型Model查询 一.查询多条记录 获取多个数据可以使用:select()方法和all()方法. 示例一:使用all()方法. //(1)筛选条件使用闭包函数 $res ...

  9. Thinkphp5.0 的Model模型

    Thinkphp5.0 的Model模型 新建user模型User.php: <?php namespace app\index\model; use think\Model; class Us ...

随机推荐

  1. POJ 1163 数字三角形

    Portal:http://poj.org/problem?id=1163 DP经典题,IOI94考题,在各大OJ上都有 #include<iostream> #include<al ...

  2. Java构造方法的姿势与易错点

    <Java基础复习>-类与对象&初始化 关于类和对象的基本理念,就不再赘述(如果你学习过还忘了,就是一种特殊的本领了),没有学习过的可以去搜索一下OOP或者类和对象,百科的知识就已 ...

  3. 字符串学习笔记(三)---- StringBuilder

    一.前言 StringBuilder是jdk1.5后出现的,而StringBuffer是jdk1.0就出现了,并且在功能上俩者并无太大区别.但为什么后来要添加一个StringBuilder呢?这是为了 ...

  4. 为什么要用内插字符串代替string.format

    知道为什么要用内插字符串,只有踩过坑的人才能明白,如果你曾今使用string.format超5个以上占位符,那其中的痛苦我想你肯定是能够共鸣的. 一:痛苦经历 先上一段曾今写过的一段代码,大家来体会一 ...

  5. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之八(四十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  6. 01 微信小程序创建组件和使用组件

    01 创建组件 遇见的困难 图标显示不出来,是因为你没有在组件的css中引入,所以显示不出来. 我一直以为是一个坑.结果是自己没有整清楚 01==>在page的同级目录下,创建一个文件夹,命名为 ...

  7. ubuntu上安装redis和配置远程访问

    ubuntu上安装redis和配置远程访问 安装redis: 下载安装包: wget http://download.redis.io/releases/redis-4.0.1.tar.gz 解压: ...

  8. Linux 磁盘管理篇, 目录管理(二)

    格式化档案系统:                    mke2fs 列出文件系统的整体磁盘使用量            df 评估文件系统的磁盘使用量            du 查看Superbl ...

  9. 【python实现卷积神经网络】激活函数的实现(sigmoid、softmax、tanh、relu、leakyrelu、elu、selu、softplus)

    代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ...

  10. GitHub搭建个人主页

    GitHub搭建个人主页 1.注册登录GitHub 2.新建仓库 新建一个名为"username.github.io",其中username为你的用户名,仓库必须为公有类型,私有仓 ...