<?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. flask中 多对多的关系 主从表之间的的增删改查

    # 角色表模型class Role(db.Model): r_id = db.Column(db.Integer, primary_key=True) r_name = db.Column(db.St ...

  2. Mac OS安装Go语言及配置VSCode开发环境:一个工具(gopls)解千愁

    前言 截止到目前为止,Go语言已经更新到1.14.1,网上的很多教程均已经过时,我在此汇总并整理一下相关的教程,提供一个适合当下的Mac OS教程. 教程中使用了Go在1.11之后推出的依赖包管理工具 ...

  3. Activiti网关--排他网关

    排他网关 1.什么是排他网关 排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用来在流程中实现决策. 当流程执行到这个网关,所有分支都会判断条件是否为true,如果为 true 则执行该分 ...

  4. 2019NYIST计科第四次周赛

    YZJ的牛肉干 Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做 YZJ的大佬,在共同的集训生活中,大家建立了深厚的友谊, YZJ准备做点什么来纪念这段激情燃烧 ...

  5. Java 配 Shell 等于美酒加咖啡

    化学中我们得知「氢气加氧气在点燃的情况下会生成水」. 生活中我们得知「良辰加美景的情况下会得到千金春宵一刻」. 技术上又何尝不是如此呢?先假设一个场景:BOSS 让你实现一个服务监控的指挥室,能看到每 ...

  6. 《Three.js 入门指南》3.1.1 - 基本几何形状 - 球体(SphereGeometry)

    3.1 基本几何形状 球体(SphereGeometry) 构造函数: THREE.SphereGeometry(radius, segmentsWidth, segmentsHeight, phiS ...

  7. App 性能测试分享

    在本文内,主要以Android性能测试为主进行分析 一.性能测试包含 1.启动时间测试   测试场景包括 - - - 首次安装启动时间.冷启动.热启动测试 2.页面响应时间:   用户从点击一个控件, ...

  8. 1089 Insert or Merge (25分)

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  9. 微信小程序之界面交互反馈

    交互反馈就是在用户出发某事件之后,给用户一个反馈信息,这要是一个很友好的习惯. 在小程序中是通过一下几种方式实现的: 1.wx.showToast()方法 showToast: function (p ...

  10. 浅谈 PCA与SVD

    前言 在用数据对模型进行训练时,通常会遇到维度过高,也就是数据的特征太多的问题,有时特征之间还存在一定的相关性,这时如果还使用原数据训练模型,模型的精度会大大下降,因此要降低数据的维度,同时新数据的特 ...