归纳总结thinkphp6常用功能

本篇文章给大家带来了关于thinkphp的相关知识,其中主要整理了一些常用的功能,包括获取表单数据、设置多应用模式、模板渲染等等相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结thinkphp6常用功能

推荐学习:《PHP视频教程》

第一步更换composer镜像

阿里镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

Laravel China镜像: composer config -g repo.packagist composer https://packagist.laravel-china.org

立即学习“PHP免费学习笔记(深入)”;

中国全量镜像:composer config -g repo.packagist composer https://packagist.phpcomposer.com9

在码云或者git下载案例发现没有vendor无法运行

composer install –ignore-platform-reqs

或者

composer update –ignore-platform-reqs

Tp6使用

1、下载tp6
composer create-project topthink/think tp

2、设置多应用模式
tp6默认是单应用访问默认进入app/controller里的方法,如果需要做多应用开发(例:http://***.com/admin、http://***.com/index)需要开启多应用模式

composer requiretopthink/think-multi-app

php think build 应用名称(例:index或者admin)

3、模板渲染

tp3: $this->display();tp5: return $this->fetch();tp6: return View::fetch('index');

tp6默认缺少很多依赖包的,需要下载

composer require topthink/think-view

控制器引入

use thinkfacadeView;

4、模板跳转重定向
在这里插入图片描述

composer require liliuwei/thinkphp-jump

控制器引入

头部引入:use liliuweithinkJump;

类内引入:use Jump;

如果报错:

查看app/config/jump.php是否有设置:

'dispatch_success_tmpl' => app()->getRootPath().'/vendor/qeq66/think-jump/template/jump.html','dispatch_error_tmpl' => app()->getRootPath().'/vendor/qeq66/think-jump/template/jump.html'

5、获取表单数据
控制器引入

use thinkfacadeRequest;$code = Request::param('code');

或者

$code = input("code");

6、数字验证码
composer require topthink/think-captcha

在应用app目录下找到全局中间件middleware.php文件,把下面注释的代码thinkmiddlewareSessionInit::class开启

7、上传图片处理图片
composer require topthink/think-image

BibiGPT-哔哔终结者 BibiGPT-哔哔终结者

B站视频总结器-一键总结 音视频内容

BibiGPT-哔哔终结者 28 查看详情 BibiGPT-哔哔终结者

8、mysql select查询
在这里插入图片描述

从tp5过渡过来的,默认select查询是返回二维数组,tp6返回数据集,虽然官方说和数组操作基本无区别

但是有些时候还是数组好用 例如arr[k][0] = “test”这种间接修改,在默认返回的数据集中,是报错的,但是数组是可以这样操作的
1、

 db::name('ceshi')->select()->toArray();

2、
修改tp6目录下的/vendor/topthink/think-orm/src/db的BaseQuery.php

在这里插入图片描述

修改示例如图所示,将图中画红框的位置删除,并且在

$resultSet = $this->connection->select($this);

下面增加一行

return $resultSet;

9、分页

$list = db::name('admin_menu')->where($where)->paginate(['list_rows'=> 10,'query' => request()->param(),]);

使用paginate方法获取分页数据,查询集合无法新增的下标值

查询条件需要增加 ‘query’ => request()->param(),

解决写法:

php端:

// An highlighted block$list = db::name('admin_menu')->where($where)->paginate(['list_rows'=> 10,'query' => request()->param(),]);$new_arr = array();foreach($list as $k=>$v){$v[$k]['erji_menu'] = “案例”;$new_arr[] = $v;}// 获取分页显示$page = $list->render();// 模板变量赋值View::assign('list', $new_arr);View::assign('page', $page);

html端

{$page|raw}

分页引用class修改

tp6vendortopthinkthink-ormsrcpaginatordriverBootstrap.php

10、新增数据差异
对比tp5 save方法用于更新 add方法用于添加
tp6 save既是更新也是添加 add方法被删除

db::name('ceshi')->where(array('tz_id'=>$post['tz_id']))->save($users);db::name('ceshi')->save($users);

加主键where是更新不加主键是添加,但是会出现问题执行成功只会返回 0,1
不会像tp5 add方法返回添加数据的主键id

/** * 插入记录 * @access public * @param array   $data         数据 * @param boolean $getLastInsID 返回自增主键 * @return integer|string */public function insert(array $data = [], bool $getLastInsID = false){    if (!empty($data)) {        $this->options['data'] = $data;    }    return $this->connection->insert($this, $getLastInsID);}

add方法改成了insert方法,虽然注释上面写着返回自增主键,但是我这边测试还是没有拿到自增主键,不清楚是版本问题还是什么这里不深究如果你没遇到就当我没说

/** * 插入记录并获取自增ID * @access public * @param array $data 数据 * @return integer|string */public function insertGetId(array $data){    return $this->insert($data, true);}

然后拿不到只能继续找发现有一个insertGetId可以拿到。也就是说为了快速开发,平时还是用save解决,遇到要拿自增主键就换成insertGetId

11、tp6 高级查询and和or同时使用
在这里插入图片描述
tp6针对and查询和or查询有快捷方法
在这里插入图片描述
但是这些快捷方法会有很多局限性,当我们对数据进行一系列的复杂查询时这些快捷方法就会出现很多问题例如:

$where1[] = ["order_khname","like",'%'.$keywords.'%'];$where2[] = ["order_khqq","like",'%'.$keywords.'%'];$where3[] = ["order_khmobile","like",'%'.$keywords.'%'];$where[] = ["order_type","=",$ddzt];$list = db::name('ceshi')    ->where($where)    ->whereOr([$where1,$where2,$where3])    ->paginate([        'list_rows'=> 10,        'query' => request()->param(),    ]);

这里我们想要的sql格式为:

SELECT * FROM `dc_ceshi` WHERE  `order_type` = 0 and ( ( `order_khname` LIKE '%1%' )  OR ( `order_khqq` LIKE '%1%' )  OR ( `order_khmobile` LIKE '%1%' )) LIMIT 0,10

实际生成的格式为:

SELECT * FROM `dc_ceshi` WHERE  `order_type` = 0 OR ( `order_khname` LIKE '%1%' )  OR ( `order_khqq` LIKE '%1%' )  OR ( `order_khmobile` LIKE '%1%' ) LIMIT 0,10

这里就可以用到闭包查询(注:这只是我学习tp6的时候遇到的问题然后在tp6文档里面找到的解决方式,直接用原生sql也是可以解决,把where条件直接改成一个自定义的字符串也可以解决,用tp5的连接方式也应该可以但是我没试)

$list = db::name('ceshi')    ->where(function ($query) use ($keywords){            $query->where("order_khname","like",'%'.$keywords.'%')                ->whereOr("order_khqq","like",'%'.$keywords.'%')                ->whereOr("order_khmobile","like",'%'.$keywords.'%');        })    ->where($where)    ->paginate([    'list_rows'=> 10,    'query' => request()->param(),]);

这时候得到sql格式为:

SELECT * FROM `dc_ceshi` WHERE  (  `order_khname` LIKE '%1%' OR `order_khqq` LIKE '%1%'  OR `order_khmobile` LIKE '%1%' )  AND `order_type` = 0 LIMIT 0,10

已经满足了我的需求,但是还是有一个问题就是如果keywords这个变量没有值的时候他查询的语句格式为:

SELECT * FROM `dc_ceshi` WHERE  (  `order_khname` LIKE '%%' OR `order_khqq` LIKE '%%'  OR `order_khmobile` LIKE '%%' )  AND `order_type` = 0 LIMIT 0,10

这种情况只需要在加个if判断:

$list = db::name('ceshi')    ->where(function ($query) use ($keywords){        if($keywords){            $query->where("order_khname","like",'%'.$keywords.'%')                ->whereOr("order_khqq","like",'%'.$keywords.'%')                ->whereOr("order_khmobile","like",'%'.$keywords.'%');        }        })    ->where($where)    ->paginate([    'list_rows'=> 10,    'query' => request()->param(),]);

12、tp6 find查询变动
tp5、tp3我们查询一个表是否存在数据可以直接查询一条

$datafind = db::name('ceshi')->find();

tp6 find查询必须增加where条件或者order排序,为什么不知道。有大神知道指点下O(∩_∩)O哈哈~

$datafind = db::name('ceshi')->order('ID DESC')->find();

推荐学习:《PHP视频教程》

以上就是归纳总结thinkphp6常用功能的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/478709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
追觅首创28cm超薄设计!嵌入式扫拖机器人空间大师Master系列发布
上一篇 2025年11月8日 10:25:50
学会这10种定时任务,我有点飘了
下一篇 2025年11月8日 10:26:03

相关推荐

  • ThinkPHP6性能优化技巧:让应用更高效

    ThinkPHP6是一款功能强大的PHP开发框架,被广泛应用于Web应用的开发中。然而,在处理大规模数据和高并发访问时,性能优化就成为了关注的焦点。本文将介绍一些让ThinkPHP6应用更高效的性能优化技巧,并附上代码示例。 一、使用缓存缓存是提高应用性能的有效手段之一。ThinkPHP6内置了缓存…

    2026年9月8日
    000
  • 通过ThinkPHP6打造一个完整的企业级Web应用

    在当前web应用程序开发领域,许多的企业级web应用都是使用php语言实现的。其中,thinkphp框架作为国内php框架发展的先锋之一,经过多年的发展与完善,成为了国内最流行的php框架之一。本文将通过thinkphp6框架的学习实践,从零开始打造一个完整的企业级web应用。 一、安装与配置 首先…

    用户投稿 2026年9月7日
    000
  • 在ThinkPHP6中使用Ajax

    thinkphp6是一款流行的php开发框架,它提供了许多强大的功能来快速开发web应用程序。其中一个非常强大的功能是ajax,它使得在不刷新整个页面的情况下,可以通过异步请求获取和更新页面内容。在本文中,我们将学习如何在thinkphp6中使用ajax,以提高web应用程序的性能与用户体验。 引入…

    用户投稿 2026年9月7日
    100
  • ThinkPHP6中的依赖注入

    依赖注入是现代php开发中非常重要的概念,它可以帮助开发者更好地管理类之间的依赖关系,提高代码的可扩展性和可重用性。在php框架thinkphp6中,依赖注入也得到了很好的支持。 在ThinkPHP6中,我们可以通过注解方式或配置文件的方式进行依赖注入。下面我们具体来看一下这两种方式的使用方法。 首…

    用户投稿 2026年9月7日
    200
  • 利用ThinkPHP6实现路由分组

    在现代web开发中,路由是一个至关重要的组成部分。它帮助我们将请求映射到相应的控制器方法,并且可以根据不同的url路径来执行不同的操作。在一些复杂的应用中,可能需要将路由进行分组,以便更好地组织和管理。本文将介绍如何在thinkphp6中实现路由分组。 ThinkPHP6是一款基于PHP的高性能We…

    用户投稿 2026年9月7日
    000
  • 如何使用ThinkPHP6实现订单管理系统

    随着互联网的发展和电子商务的兴起,越来越多的企业开始使用在线订单管理系统,以便更好地管理订单、提高工作效率、提供更好的客户服务。本文将介绍如何使用thinkphp6框架开发一个简单的订单管理系统,涵盖了订单列表、订单详情、搜索、排序、分页等功能。 准备工作 首先,需要安装好PHP、MySQL和Com…

    用户投稿 2026年9月7日
    000
  • 在ThinkPHP6中使用Memcached

    随着互联网的快速发展,网站的访问量越来越大,如何提高网站的访问速度成为了每个网站开发者需要关注的问题。在这方面,缓存技术是一个非常重要的手段。而memcached作为一种高性能的分布式内存对象缓存系统,应用广泛,特别是在高并发的web应用程序中更是不可或缺的一部分。本文就来介绍在thinkphp6中…

    用户投稿 2026年9月7日
    000
  • 如何在ThinkPHP6中使用队列技术

    随着web网站的不断发展和用户量的增长,系统的并发处理能力和任务调度能力成为设计中的瓶颈。为了解决这些问题,队列技术被广泛地应用于web系统中。 ThinkPHP6是一款优秀的PHP开发框架,它提供了强大的队列技术,可以用于异步处理任务和调度任务。本篇文章将介绍如何在ThinkPHP6中使用队列技术…

    用户投稿 2026年9月7日
    000
  • 如何使用ThinkPHP6实现支付宝授权登录

    随着移动支付的普及,支付宝已经成为了很多人日常生活中必不可少的支付工具。而对于一些在线网站和应用程序来说,支付宝授权登录也成为了用户快速登录的一种方便有效的方式。那么如何使用thinkphp6来实现支付宝授权登录呢?下面将为大家详细介绍。 1.申请支付宝开发者账号在使用支付宝授权登录之前,我们需要先…

    用户投稿 2026年9月7日
    000
  • 如何在ThinkPHP6中使用Swagger

    swagger是一种流行的api文档生成工具,可以帮助开发人员轻松地创建、设计和部署api接口。在本文中,我们将介绍如何在thinkphp6中使用swagger来生成api文档,并使用swagger-ui来查看和测试api接口。 第一步:安装Swagger-UI和Swagger-Annotation…

    用户投稿 2026年9月7日
    000
  • 如何使用ThinkPHP6实现邮件发送

    随着电子邮件在日常生活中的广泛应用,很多网站和应用程序都需要实现邮件发送功能。thinkphp6提供了很方便的方式来实现邮件发送功能,并且支持多种邮件服务商。 本文将介绍如何使用ThinkPHP6框架来实现邮件发送功能。 配置邮件发送参数 ThinkPHP6的邮件发送功能需要在应用的.env文件中配…

    用户投稿 2026年9月7日
    100
  • 利用ThinkPHP6实现微信小程序云开发

    随着互联网技术的不断发展,移动互联网的重要性越来越受到人们的关注。微信小程序是近年来流行起来的一种移动应用,越来越多的企业和开发者选择使用微信小程序来进行产品推广和开发。而微信小程序云开发则是一种更加简便和高效的方式。 ThinkPHP6是一款PHP框架,具有高效、简单、易扩展等特点。本文将介绍如何…

    用户投稿 2026年9月7日
    000
  • 学习ThinkPHP6的最佳实践

    thinkphp6是目前最流行的php框架之一,具有高效、简洁、安全等特点,在web开发领域中得到广泛应用。在学习和使用该框架的过程中,我们需要掌握一些最佳实践,以确保代码质量和性能,并提高开发效率。本文将分享一些学习thinkphp6的最佳实践。 一、采用MVC模式 ThinkPHP6采用了MVC…

    用户投稿 2026年9月7日
    000
  • 在ThinkPHP6中使用Laravel的Eloquent ORM

    thinkphp6是一款十分流行的php框架,而laravel则是另一款备受欢迎的php框架。两个框架都拥有各自的特点和优势,但其中laravel的eloquent orm(对象关系映射)引擎被誉为“php世界最好的orm”。 在使用ThinkPHP6时,如果我们想用上Laravel的Eloquen…

    用户投稿 2026年9月7日
    000
  • 如何使用ThinkPHP6实现拦截器

    随着互联网技术的不断发展和应用,网站的访问量越来越大。为了保证网站的稳定性和安全性,我们需要添加各种安全层面的保护。拦截器是其中一个非常实用的技术手段,它可以在用户访问某个页面之前拦截请求,进行特定的处理,从而达到控制访问权限的目的。本文将介绍如何使用thinkphp6实现拦截器。 环境准备 在开始…

    用户投稿 2026年9月7日
    100
  • 利用ThinkPHP6实现云存储

    在当下的互联网应用中,对于文件存储和传输的需求越来越高。云存储成为了一种越来越流行的解决方案,本文将介绍如何利用thinkphp6框架实现云存储。 一、什么是云存储 云存储是将数据存储在云计算平台上的一种方式,它可以在不同的设备之间进行数据共享和传输。相较于传统的本地存储方式,云存储具有以下几个优势…

    用户投稿 2026年9月7日
    000
  • 如何在ThinkPHP6中使用Elasticsearch

    在当前互联网时代,随着海量数据的爆炸式增长,搜索引擎变得越来越重要。而elasticsearch作为一个高度可扩展的全文搜索引擎,已经逐渐成为开发者们解决搜索问题的首选。本文将介绍如何在thinkphp6中使用elasticsearch来实现数据检索和搜索功能,让我们开始吧。 第一步:安装elast…

    用户投稿 2026年9月7日
    000
  • 如何使用ThinkPHP6实现动态路由

    thinkphp6是一个开源的php框架,它提供了许多便捷的功能来帮助开发者快速构建web应用程序。其中一个强大的功能就是动态路由。本文将介绍如何使用thinkphp6实现动态路由。 什么是动态路由? 路由是指将URL请求映射到应用程序的特定部分的过程。在静态路由中,URL路径与应用程序的路由规则一…

    用户投稿 2026年9月7日
    000
  • 如何使用ThinkPHP6实现数据库分页

    随着web技术的发展和普及,越来越多的网站采用数据库分页技术,以便更好地展示大量数据。thinkphp作为一种常用的php框架,自然也推出了相应的数据库分页扩展。本篇文章将介绍如何使用thinkphp6实现数据库分页。 一、ThinkPHP的Paginator类 首先,我们需要了解一下ThinkPH…

    用户投稿 2026年9月7日
    000
  • 如何使用ThinkPHP6实现支付宝支付

    随着移动支付的普及,支付宝成为了越来越多人的首选支付方式。而作为一款高性能、高效率、安全稳定的开源框架,thinkphp6也被众多开发人员所青睐。那么,如何在thinkphp6中快速简便地实现支付宝支付呢? 首先,我们需要在支付宝开放平台上申请签约支付宝开放平台,获取相应的应用信息。具体流程可参考支…

    用户投稿 2026年9月7日
    000

发表回复

登录后才能评论
关注微信