简析Tp5框架通过模型进行增删改查
Thinkphp5增删改查操作(通过模型进行增删改查)
Thinkphp5怎么通过模型增删改查,非常简单。
首先在application\index\controller目录下建立控制器,命名为:Index.php
Index.php 代码如下,我这里是在application\index\controller 模块下建立的控制器,如果不是index模块,你的命名空间要改成自己模块对应的命名空间。
<?php namespace app\index\controller; use app\index\model\Admin; class Index { public function index(){ Admin::index(); } }
接着在application\index\model 目录下建立模型 ,命名为Admin.php
Admin.php 代码如下,我这里是在application\index\model 模块下建立的模型,如果不是index模块,你的命名空间要改成自己模块对应的命名空间。
Admin.php (先讲模型查询操作)
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $list = '14'; /* 单条数据查询操作,all方法是tp5框架规定的查询方法,all里面是一个闭包,作为变量传入, 不要纠结闭包构造,直接复制用即可,不需要关注$query是什么?框架内部实现时传值进去, 执行where方法,只需要关注where条件和传的变量$list即可。 $list值自己可定 如上面$list = 14,id可自己定,查询id=14这一条数据 */ $re = Admin::all(function($query) use ($list) { $query->where('id','=',$list); }); //echo '<pre/>';var_dump($re[0]->data); } }
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $list = ['13','14']; /* 这是多条查询,查询id=13和14这两条数据,同上述只需要关注where里面的条件即可, 如果查name或其它字段把where里的id改成name即可,$list也封装好了, 你可以传值进去,就像我上面$list 等于一个数组,*/ $re = Admin::all(function($query) use ($list) { $query->where('id','in',$list); }); // echo '<pre/>';var_dump($re); } }
<?php namespace app\index\model; use think\Model; use think\Db; class Admin extends Model { public static function index() { /* join查询,查询两个表以上的数据 Db::table 要加上use think\Db; 这里查的是user表的id等于sessions表的id,两个表里的符合条件的全部数据 */ $re = Db::table('user') ->alias('a') ->join('sessions w','a.id = w.id') ->select(); // var_dump($re);die; } }
namespace app\index\model; use think\Model; use think\Db; class Admin extends Model { // 数据表名 这里要提一下,表名必须是完整的表名,要带上表前缀,哪怕在配置文件里面设置了表前缀。 protected $table = 'fa_kindex'; // 查询 public static function index() { // 如果要查询一张表中所有字段信息,直接写个闭包在里面就可以了, $result = Index::select( function() {} ); return $result; // $offset = 0, $limit = 1, $result = Index::select( // use()里面写传进闭包中的变量,如下面的 use ($offset , $limit) function($query) use ($offset , $limit , $rid) { /* 闭包构造 $query可以衔接order,limit,where,field等条件。但不能写成 $query->select();因为这样select方法会执行两次 可以写成 $query->order('id','asc'), //根据id升序查询 $query->limit($offset , $limit) $query->field('id',true); //查询除id字段外的所有字段数据 // 查询符合id = 1的id,name字段的数据,查询结果按id升序排列 $query->field('id','name')->where('id=1')->order('id','asc'); */ $query->order('id','asc')->limit($offset , $limit)->field('id',true)->where('rid ='.$rid); } ); return $result; } }
当然,很多人说查询后,得到的是类的对象,那是因为,tp3.2就是直接返回查询结果,而tp5没有直接返回查询结果,返回的是整个实例化类,把查询结果放到类的data属性里面,所以要取出数据怎么取?想象一下实例化类后怎么访问类中的属性,就不难理解了, 用->去取,
echo '<pre/>';var_dump($re[0]->data);
这样就可以拿到数据了,跟tp3.2一样,当然了我这是单条的,如果多条的话,$re的键值你可以循环的方式foreach去取。
Admin.php (模型删除操作)
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $list = '14'; /*单条数据删除操作 ,同上面的单条查询一样,只关注where条件和传的变量$list即可 $list值自己可定 如上面$list = 14,id可自己定,删除id=14这一条数据 */ Admin::destroy(function($query) use ($list) { $query->where('id','=',$list); }); } }
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $list = ['1','3']; /*多条数据删除操作 ,同上面的多条查询一样,只关注where条件和传的变量$list即可 $list值自己可定 如上面$list等于一个数组,id可自己定,删除id=1和id=3两条数据 */ Admin::destroy(function($query) use ($list) { $query->where('id','in',$list); }); } }
Admin.php (模型修改操作)
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ // 静态方法里执行非静态方法,new static就是本类,reindex为本类的reindex方法 $method = new \ReflectionMethod(new static,'reindex'); $method->invokeArgs(new static,array()); } public function reindex(){ $id = '5'; $list = [ 'goods_id' => $goods_id, 'user_id' => $_SESSION['user_id'], ]; /* 因为isUpdate方法是非静态方法,只能用$this调用,根据手册isUpdate(true) 是更新,isUpdate(false)是查询,tp5方法有点多还有点乱,但不要紧实际写业务逻辑时, 记住固定句型即可,像下面我们只关注save里面传入什么东西即可,跟上面的where一样, 后面写条件,前面写修改的内容,将符合$list条件的sql语句中的rid字段值修改为0; $list是条件可设置多个条件,如上面的$list数组 */ $this->isUpdate(true)->save(['rid' => '0'],$list); } }
Admin.php (模型新增操作)
<?php namespace app\index\model; use think\Model; class Admin extends Model { // 设置当前模型对应的完整数据表名称 protected $table = 'user'; public static function index(){ $username = 'Thinkphp'; $passwd = '123456'; /* 增加一条数据,Admin::create(),调用框架静态方法create,这里提一下Admin 是你模型的名字,如果建立的模型是user,那就写User::create(), 同样只关注create里改传入什么参数即可。新增一条数据,username插入值是$username passwd插入值是$passwd,你可以根据自己需求制定字段的值,别死板灵活点*/ Admin::create([ 'username' => $username, 'passwd' => $passwd, ]); } }
相关推荐:最新的10个thinkphp视频教程
以上是简析Tp5框架通过模型进行增删改查的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

运行 ThinkPHP 项目需要:安装 Composer;使用 Composer 创建项目;进入项目目录,执行 php bin/console serve;访问 http://localhost:8000 查看欢迎页面。

ThinkPHP 拥有多个版本,针对不同 PHP 版本而设计。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用于修复 bug 和提供新功能。当前最新稳定版本为 ThinkPHP 6.0.16。在选择版本时,需考虑 PHP 版本、功能需求和社区支持。建议使用最新稳定版本以获得最佳性能和支持。

ThinkPHP Framework 的本地运行步骤:下载并解压 ThinkPHP Framework 到本地目录。创建虚拟主机(可选),指向 ThinkPHP 根目录。配置数据库连接参数。启动 Web 服务器。初始化 ThinkPHP 应用程序。访问 ThinkPHP 应用程序 URL 运行。

Laravel 和 ThinkPHP 框架的性能比较:ThinkPHP 性能通常优于 Laravel,专注于优化和缓存。Laravel 性能良好,但对于复杂应用程序,ThinkPHP 可能更适合。

《开发建议:如何利用ThinkPHP框架实现异步任务》随着互联网技术的迅猛发展,Web应用程序对于处理大量并发请求和复杂业务逻辑的需求也越来越高。为了提高系统的性能和用户体验,开发人员常常会考虑利用异步任务来执行一些耗时操作,比如发送邮件、处理文件上传、生成报表等。在PHP领域,ThinkPHP框架作为一款流行的开发框架,提供了一些便捷的方式来实现异步任务。

ThinkPHP 安装步骤:准备 PHP、Composer、MySQL 环境。使用 Composer 创建项目。安装 ThinkPHP 框架及依赖项。配置数据库连接。生成应用代码。启动应用并访问 http://localhost:8000。

ThinkPHP 是一款高性能的 PHP 框架,具备缓存机制、代码优化、并行处理和数据库优化等优势。官方性能测试显示,它每秒可处理超过 10,000 个请求,实际应用中被广泛用于京东商城、携程网等大型网站和企业系统。

基于ThinkPHP6和Swoole的RPC服务实现文件传输功能引言:随着互联网的发展,文件传输在我们的日常工作中变得越来越重要。为了提高文件传输的效率和安全性,本文将介绍基于ThinkPHP6和Swoole的RPC服务实现文件传输功能的具体实现方法。我们将使用ThinkPHP6作为Web框架,利用Swoole的RPC功能来实现跨服务器的文件传输。一、环境准
