ThinkPHP6.0 安装使用

本文介绍了如何使用Composer安装和配置TP6框架,包括镜像设置、创建项目、数据库连接与切换、路由配置、数据操作以及错误处理。还涉及到了模型的使用、数据的增删改查、JSON字段处理、验证器的创建和页面标签的运用。
摘要由CSDN通过智能技术生成

TP6官方手册

  1. 打开cmd输入
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  1. 上一步不报错时候运行这一步 创建一个叫tp6 tp6 框架源码
composer create-project topthink/think tp6
  1. 修改.env 文件
    将根目录下的 .example.env 重命名为 .env

  2. 隐藏路由中的index.php
    打开 public 找到 .htaccess 添加以下伪静态

    <IfModule mod_rewrite.c>
     Options +FollowSymlinks -Multiviews
     RewriteEngine On
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteCond %{REQUEST_FILENAME} !-f
     #RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
       RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
    </IfModule>
    
  3. 切换数据库查询
    (1) 复制database下的 mysql 如下 修改名称
    (2) 修改.env 文件 复制DATABASE 修改为和demo相同的名称
    (3)使用方法

        /**
        * 使用Db::name() 时需要配置数据库前缀
        */
        public function  demo  () 
        {
          $data = Db::connect('demo')->name('studio')->where('status',1)->select();
          $data = Db::connect('mysql')->name('studio')->where('status',1)->select();
           return json($data);  
        }	 
    

(修改前)

        'mysql' => [
        // 数据库类型
        'type'            => env('database.type', 'mysql'),
        // 服务器地址
        'hostname'        => env('database.hostname', '127.0.0.1'),
        // 数据库名
        'database'        => env('database.database', ''),
        // 用户名
        'username'        => env('database.username', 'root'),
        // 密码
        'password'        => env('database.password', ''),
        // 端口
        'hostport'        => env('database.hostport', '3306'),
        // 数据库连接参数
        'params'          => [],
        // 数据库编码默认采用utf8
        'charset'         => env('database.charset', 'utf8'),
        // 数据库表前缀
        'prefix'          => env('database.prefix', ''),
        // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
        'deploy'          => 0,
        // 数据库读写是否分离 主从式有效
        'rw_separate'     => false,
        // 读写分离后 主服务器数量
        'master_num'      => 1,
        // 指定从服务器序号
        'slave_no'        => '',
        // 是否严格检查字段是否存在
        'fields_strict'   => true,
        // 是否需要断线重连
        'break_reconnect' => false,
        // 监听SQL
        'trigger_sql'     => env('app_debug', true),
        // 开启字段缓存
        'fields_cache'    => false,
    ],

(修改后)

        'demo' => [
        // 数据库类型
        'type'            => env('database.type', 'mysql'),
        // 服务器地址
        'hostname'        => env('database.hostname', '127.0.0.1'),
        // 数据库名
        'database'        => env('database.database2', 'demo'),
        // 用户名
        'username'        => env('database.username', 'root'),
        // 密码
        'password'        => env('database.password', ''),
        // 端口
        'hostport'        => env('database.hostport', '3306'),
        // 数据库连接参数
        'params'          => [],
        // 数据库编码默认采用utf8
        'charset'         => env('database.charset', 'utf8'),
        // 数据库表前缀
        'prefix'          => env('database.prefix', ''),
        // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
        'deploy'          => 0,
        // 数据库读写是否分离 主从式有效
        'rw_separate'     => false,
        // 读写分离后 主服务器数量
        'master_num'      => 1,
        // 指定从服务器序号
        'slave_no'        => '',
        // 是否严格检查字段是否存在
        'fields_strict'   => true,
        // 是否需要断线重连
        'break_reconnect' => false,
        // 监听SQL
        'trigger_sql'     => env('app_debug', true),
        // 开启字段缓存
        'fields_cache'    => false,
    ],
  1. 链式操作的查询方法
    /**
    * 使用 removeOption() 可以删掉上一次查询的内容
    */

    $getData = $model->where('status', 1)->order('id desc')->limit('10')->find();
    $getData = $model->removeOption('where')->order('id desc')->limit('10')->find();
    return json($getData);
    

7.插入数据 当插入的数据没有该字段或发生其他错误时使用strict() 可以忽略错误继续执行

    $data = [
        'username' => 'demo',
        'password' => '123456',
        'sex' => 1,
        'aaa'=>'dadad',
    ];

    return Db::name('demo')->strict(false)->insert($data);  //成功之后返回1
  1. 修改数据

      $data = [
          'username' => 'demo001',
      ];
      return Db::name('demo')->where('id',1)->update($data); 
      ```
    
    * 成功之后返回 1
    
    
  2. 修改的字段自增/自减

        return Db::name('demo')
            ->where('id',1)
            ->inc('id')
            ->dec('prix')
            ->update();
    
  3. 删除记录

        Db::name('demo')->where('id', 1)->delete();    //删除 id为1 的记录
        Db::name('demo')->delete([1, 2, 3, 4]); //删除主键为 1 2 3 4 的记录
    
  4. 类型转换

    protected $type = [
        'status' => 'boolean',
        'create_time' => 'datatime:Y-m-d'
    ];
    
  5. 设置放废弃字段 :设置之后这个字段就不在查询列表里了,写入忽略
    protected $disuse = [‘email’, ‘uid’, ‘create_time’];
    13.
    //数据库写入json字段 直接通过数组的方式即可完成
    //DB 方式

        $data = [
            'username' => 'zhangsan',
            'email' => 'admin@qq.com',
            'mobile' => '188888888',
            'list' => ['x' => 1.68, 'y' => 2.68, 'z' => 3.68],
        ];
        Db::name('demo')->json(['list'])->insert($data);
    

    ​ /**
    ​ * 模型方式
    ​ * 前置条件: 在model中设置修改的字段 protected $json = [‘list’];
    ​ * 使用模型方式去新增你包涵json数据的字段
    ​ */

    //实例化模型
    $model = new  DemoModel();
    //新增数据
    $model->username = 'zahngsan002';
    $model->email = 'admin@qq.com';
    $model->mobile = '188888888';
    $model->uid = '001';
    $model->status = '1';
    $model->list = ['username'=>'zhangsan003','status'=>1];
    $model->save();
    

    }

14.查询带有json数据的记录

public function test002()
{
    Db::name('demo')->json(['list'])->find(1001);
}

使用对象方式来对数据进行增删改查

调用对象 使用对象的方式来修改和查询数据

public function obj()
{
$getData = DemoModel::where('list->usernaem', 'zhangsan')->find();
//使调用对象直接查询指定id的记录
$getData = DemoModel::find(1001);
//return $getData;

//更新修改json数据 直接通过对象的方法
$getData = DemoModel::find(1001);
$getData ->usernme = 'zhangsan003';
$getData->save();
}
 * 软删除 和 真删除
      *软删除后的数据查询方法
  public function del()
  {
        $id = 1001;
    //软删除
    $data001 = DemoModel::destroy($id);
    //真删除
    $data002 = DemoModel::delete($id);

    //软删除加未删除数据的查询方法
    $getData = DemoModel::withTrashed()->select();
    //return json($getData);

    //软删除加未删除数据的查询方法
    $getData = DemoModel::withTrashed()->find($id);
    //return json($getData);
    //查询所有软删除的数据
    $getData = DemoModel::onlyTrashed()->select();
    //return json($getData);

    //将软删除的数据恢复为正常数据
    $getData = DemoModel::onlyTrashed()->find($id);
    $getData->restore();

    //使用软删除方法进行真删除
    $data001 = DemoModel::destroy($id,true);
    
}

路由

默认开启 关闭需要在confi / route.php

with_routh  =>false

请求变量

        \think\facade\Request::param(); //接收数据
        \think\facade\Request::get();   //get方法接收
        \think\facade\Request::post();  //post方法接收
        \think\facade\Request::ip();     //获取当前ip
        \think\facade\Request::controller(); //获取当前控制器名称

        \think\facade\Request::isGet(); //判断是否为get方法
        \think\facade\Request::isPost(); //判断是否为post方法
        \think\facade\Request::isPut(); //判断是否为put方法
        \think\facade\Request::isDelete(); //判断是否为delete方法
        \think\facade\Request::isJson(); //判断是否为json方法
        \think\facade\Request::isHead(); //判断是否为header方法
        等方法...

public  function  re($id,$username, $where =[])
{

    // 在方法中添加对应接收的参数
    // 例如: 参数为username 接收时添加 $usernaem 
    //       相当于 $username = input('username');
    $data = DemoModel::where(['id' => $id, 'username' => $username])->where($where)->find();

}
    

响应输出和重定向

         //响应输出 包括 return viwe() json();
        //默认以html格式输出  如果发起json 请求则输出json格式;
        //背后是 response 对象  可以认用response() 输出达到相同的效果;
        $data = DemoModel::where('status',1)->where($where)->find();

        return response($data);

        //使用 response()方法可以设置第二种参数 状态码或调用 code()方法;
        return response($data,200);
        return response($data)->code(200);
        //return view()  json() 返回的数据类型是不同的,但是效果一样
        return json($data,200);
        return json($data)->code(200);

        //不仅可以设置状态码还可以添加header头部信息
        return json($data)
            ->code(200)
            ->header(['Cache-control'=>'no-cache,must-revalidate']);
        //重定向 redirect
        return redirect('https://www.baidu.com');

        //站内重定向
        return redirect('/admin/active/index',201);

        return redirect(url('admin/index'));
        //附加session信息
        return redirect(url('admin/index'))->with('name','zhangsan');

验证器

生成app/validate/Demo.php 验证器

命令行: php think make:validate Demo

//demo 示例代码
 //字符串格式
    protected $rule = [
        'username|用户名' => 'require|max:6|checkName:张三',
        'password|密码' => 'require|min:6|max:11',
        'mobile|手机号' => 'require|max:11',
        //验证邮箱,手机号,身份证,等等时可以使用正则表达
        'email|邮箱' => 'email',
    ];

    //数组格式
    protected $rule = [

        'username|用户名' => [
            'require' => 'require',
            'max'     => 6,
            'checkName'     => '张三',
        ],
        'password|密码' => [
            'require' => 'require',
            'max'     => '6',
            'min'     => '11',
        ],
        'mobile|手机号' => [
            'require' => 'require',
            'max'     => '11',
        ],
       'email|邮箱'=>[
          'email'=>'email',
       ],
    ];

    //message提示文字
    protected $message = [
        'username.require' => '用户名不能为空!',
        'password.require' => '密码不能为空!',
        'mobile.require' => '手机号不能为空!',
        'username.max' => '用户名过长!',
        'password.min' => '密码不能低于6位',
        'password.max' => '密码不能超过11位',
        'mobile.max' => '手机号格式错误,请输入正确的手机号!',
        'email' => '邮箱格式错误!',
    ];
     //验证场景 
    protected  $scene =[
        'create'=>['username','password','mobile','email'],
        'edit'=>['username','mobile'],

    ];
    
    //自定义规则 名称中不得含有 张三
    //过滤注册或修改昵称时用户输入非法字符串
    protected  function  checkName($value,$rule,$data,$field,$title)
    {
        return $rule != $value ? true : '   名称存在非法称谓!';
    }

页面标签的使用

eq标签

eq/equal =>     等于,
neq/notequal => 不等于,
gt =>           大于,
egt =>          大于等于,
lt =>           小于,
elt/equal =>    小于等于,
heq =>          恒等于,
nheq =>         不恒等于
{switch  $data}   //$data 是对应控制器渲染时输出的参数
    {case 1|2} 输出1 {/case}
    {case 3|4} 输出3 {/case}
    {case 5|6} 输出5 {/case}
    {case 7  } 输出7 {/case}
    {default /} 不存在
{/switch}
if( ($data >10) OR ($data = 0 ))
   OK
{else if ($data =100)}
  NOT
{/if}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值