博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThinkPHP 5.0 控制器-》请求-》数据库
阅读量:5231 次
发布时间:2019-06-14

本文共 5081 字,大约阅读时间需要 16 分钟。

ThinkPHP 5.0 控制器-》请求-》数据库

控制器总结

  1. 无需继承其他的类(若继承了Think/Controller,可直接调用view函数渲染模板),位置处于application模块下controller文件,返回的数据格式无需特别定义,直接使用renturn返回,模板输出可以直接调用view方法
  2. 一般用于数据的传输,对前端的数据的输出,后台数据的的传输(数据交至模型层),但不涉及业务逻辑操作。

请求

可以通过Request对象完成全局输入变量的检测、获取和安全过滤,支持包括$_GET、$_POST、$_REQUEST、$_SERVER、$_SESSION、$_COOKIE、$_ENV等系统变量,以及文件上传信息。

  1. 检测变量
Request::instance()->has('id','get');    Request::instance()->has('id','post');    input('?get.id');    input('?post.id');
  1. 获取变量
  • PARAM变量,框架提供的用于自动识别GET、POST或者PUT请求的一种变量获取方式,是系统推荐的获取请求参数的方法
// 获取当前请求的name变量Request::instance()->param('name');// 获取当前请求的所有变量(经过过滤)Request::instance()->param();// 获取当前请求的所有变量(原始数据)Request::instance()->param(false);// 获取当前请求的所有变量(包含上传文件)Request::instance()->param(true);// 或者助手函数input('param.name');input('param.');或者input('name');input('');
  • GET 变量
Request::instance()->get('id'); // 获取某个get变量Request::instance()->get('name'); // 获取get变量Request::instance()->get(); // 获取所有的get变量(经过过滤的数组)Request::instance()->get(false); // 获取所有的get变量(原始数组)
  • POST 变量
Request::instance()->post('name'); // 获取某个post变量Request::instance()->post(); // 获取经过过滤的全部post变量Request::instance()->post(false); // 获取全部的post原始变量
  • 同样用法还有session,cookie
  1. 过滤变量
    框架默认没有设置任何过滤规则,
// 默认全局过滤方法 用逗号分隔多个'default_filter'         => 'htmlspecialchars', // 支持设置多个过滤方法Request::instance()->filter(['strip_tags','htmlspecialchars']),// 可以在获取变量的时候添加过滤方法Request::instance()->get('name','','htmlspecialchars'); // 获取get变量 并用htmlspecialchars函数过滤Request::instance()->param('username','','strip_tags'); // 获取param变量 并用strip_tags函数过滤Request::instance()->post('name','','org\Filter::safeHtml'); // 获取post变量 并用org\Filter类的safeHtml方法过滤// 只获取当前请求的id和name变量Request::instance()->only('id,name');// 只获取GET请求的id和name变量Request::instance()->only(['id','name'],'get');// 只获取POST请求的id和name变量Request::instance()->only(['id','name'],'post');/ 排除id和name变量Request::instance()->except('id,name');// 排除GET请求的id和name变量Request::instance()->except(['id','name'],'get');// 排除POST请求的id和name变量Request::instance()->except(['id','name'],'post');// input函数支持对变量使用修饰符功能,可以更好的过滤变量,默认为s,特定类型必须指定修饰符input('get.id/d');input('post.name/s');input('post.ids/a');Request::instance()->get('id/d');
修饰符 作用s   强制转换为字符串类型d   强制转换为整型类型b   强制转换为布尔类型a   强制转换为数组类型f   强制转换为浮点类型

数据库

链接数据库
  1. 配置文件设置:应用目录或者模块目录下面的database.php中添加下面的配置参数
return [    // 数据库类型    'type'        => 'mysql',    // 数据库连接DSN配置    'dsn'         => '',    // 服务器地址    'hostname'    => '127.0.0.1',    // 数据库名    'database'    => 'thinkphp',    // 数据库用户名    'username'    => 'root',    // 数据库密码    'password'    => '',    // 数据库连接端口    'hostport'    => '',    // 数据库连接参数    'params'      => [],    // 数据库编码默认采用utf8    'charset'     => 'utf8',    // 数据库表前缀    'prefix'      => 'think_',    // 数据库调试模式    'debug'       => false,    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)    'deploy'      => 0,    // 数据库读写是否分离 主从式有效    'rw_separate' => false,    // 读写分离后 主服务器数量    'master_num'  => 1,    // 指定从服务器序号    'slave_no'    => '',    // 是否严格检查字段是否存在    'fields_strict'  => true,    ];
  1. 方法配置
Db::connect([    // 数据库类型    'type'        => 'mysql',    // 数据库连接DSN配置    'dsn'         => '',    // 服务器地址    'hostname'    => '127.0.0.1',    // 数据库名    'database'    => 'thinkphp',    // 数据库用户名    'username'    => 'root',    // 数据库密码    'password'    => '',    // 数据库连接端口    'hostport'    => '',    // 数据库连接参数    'params'      => [],    // 数据库编码默认采用utf8    'charset'     => 'utf8',    // 数据库表前缀    'prefix'      => 'think_',]);// 或者Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');
  1. 模型
    模型类中可以设置 $connection 配置,访问该模型时链接对应数据库,同时支持使用数据库连接的配置名称
/在模型里单独设置数据库连接信息namespace app\index\model;use think\Model;class User extends Model{    // 直接使用配置参数名    protected $connection = 'db_config1';}
  1. 获取器:获取器的作用是在获取数据的字段值后自动进行处理。
class User extends Model {    // 字段名为方法名(数据库已有字段)    public function getStatusAttr($value)    {        $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];        return $status[$value];    }        public function getStatusTextAttr($value,$data)    {        $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];        return $status[$data['status']];    }}
  1. 自动插入时间戳
// database.php中开启自动写入时间戳字段'auto_timestamp' => true,// 或者在模型中设置protected $autoWriteTimestamp = true;// 注意,自动写入字段类型为int,且字段名默认为:create_time update_time,如果要修改字段类型及写入字段名称,则需要重新设置// database.php开启自动写入时间戳字段'auto_timestamp' => 'datetime',// 或者在模型中设置protected $autoWriteTimestamp = 'datetime';// 定义时间戳字段名protected $createTime = 'create_at';protected $updateTime = 'update_at';
  1. 只读字段:只读字段用来保护某些特殊的字段值不被更改,这个字段的值一旦写入,就无法更改
namespace app\index\model;use think\Model;class User extends Model{   // 设置只读字段,执行更新方法之前会自动过滤掉只读字段的值,避免更新到数据库    protected $readonly = ['name','email'];}
  1. 软删除:在实际项目中,对数据频繁使用删除操作会导致性能问题,软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复
namespace app\index\model;use think\Model;// 使用软删除需要引入代码复用包use traits\model\SoftDelete;class User extends Model{    use SoftDelete;    // 定义删除时间    protected $deleteTime = 'delete_time';}// 操作删除,传入参数true则为真删除User::destroy(1);User::destroy(1,,true);$user->delete();$user->delere(true);
  1. 聚合函数(常用):max min avg count sum

转载于:https://www.cnblogs.com/maomojun/p/9340616.html

你可能感兴趣的文章
git
查看>>
Django中ORM对数据库的增删改查
查看>>
亚马逊lamda架构
查看>>
分享Kali Linux 2017.1镜像
查看>>
网页后门工具laudanum
查看>>
Metasploit AFP爆破模块afp_login
查看>>
Deployment Descriptor Web.xml
查看>>
CSS布局奇淫技巧之--各种居中
查看>>
清除浮动
查看>>
[Android] AutoCompleteTextView:自己主动完毕输入内容的控件(自己主动补全)
查看>>
Bayan 2015 Contest Warm Up D题(GCD)
查看>>
Java线程池应用
查看>>
vue-cli 一分钟搭建自己的vue项目
查看>>
ajax与算法,sql的group处理
查看>>
Javascript设计模式之匿名函数与闭包
查看>>
标志设计案例-logo设计公司EOVAS
查看>>
input标签常用属性
查看>>
关于iBatis配置xml文件时出现中文注释出错的一个问题(很坑爹.)
查看>>
多表连接查询
查看>>
高校C语言自动考试系统参考文献
查看>>