12月3日:thinkphp模型与数据库相同的部分

news2024/9/23 23:32:09

定义

定义一个模型类

<?php

namespace app\index\model;
use think\Model;

//定义一个User模型类
class User extends Model{
    //默认主键为自动识别,如果需要指定,可以设置属性
    //protected $pk = 'uid';  //$pk代表主键,primary key的缩写
}

模型调用的常用两种方法

 public function modelTest(){
        //第一种方法:静态方法
        $userModel = \app\index\model\User::get(1);
        dump($userModel); //返回类型为对象类型
        //第二种方法:实例化模型
        $userModel = new  \app\index\model\User;
        $userModel->name('admin');
        //dump($userModel);       //返回类型为对象类型
    }

官方文档中其他两种

模型调用的其他两种方法

 拓展

前后端页面中的success方法和api中的success方法不同

前后端中的sucess方法
api中的success方法

 不同点:

前后端页面显示的success方法success()

 /**
     * 操作成功跳转的快捷方法
     * @access protected
     * @param mixed  $msg    提示信息
     * @param string $url    跳转的 URL 地址
     * @param mixed  $data   返回的数据
     * @param int    $wait   跳转等待时间
     * @param array  $header 发送的 Header 信息
     * @return void
     * @throws HttpResponseException
     */
    protected function success($msg = '', $url = null, $data = '', $wait = 3, array $header = []){}

api中的success()

/**
     * 操作成功返回的数据
     * @param string $msg    提示信息
     * @param mixed  $data   要返回的数据
     * @param int    $code   错误码,默认为1
     * @param string $type   输出类型
     * @param array  $header 发送的 Header 信息
     */
    protected function success($msg = '', $data = null, $code = 1, $type = null, array $header = [])
    {
        $this->result($msg, $data, $code, $type, $header);
    }

模型的初始化

模型同样支持初始化,与控制器的初始化不同的是,模型的初始化是重写Modelinitialize

第一种调用think目录下model中的initialize方法

 还可以使用init()静态方法

 protected static function init(){
        //自定义静态初始化方法
    }

与数据库操作基本相似,模型对应mvc中的m是用来操作数据库的

新增

实例化对象

public function modelTest1(){
        //使用实例化方法进行新增
        $userModel = new \app\index\model\User;
        $userModel->username = 'zhangsan';
        $userModel->save();
        dump($userModel->id);//获取自增id
    }

 静态方法

//新增数据
    public function modelTest1(){
        //静态方法
        $user = \app\index\model\User::create([
            'username'  =>  'thinkphp',
            'email' =>  'thinkphp@qq.com'
        ]);
        dump($user->username);
        dump($user->email);
        dump($user->id); // 获取自增ID
    }

更新

我觉得官方文档比我描述的更仔细

更新 · ThinkPHP5.0完全开发手册 · 看云

其中需要注意的点是save()在模型处理中可用作更新也可用作保存

//save()更新数据与保存数据
    public function modelTest2(){
        //保存数据
        $userModel = new \app\index\model\User;
        $userModel->username = 'lisi';
        $userModel->save();
        //修改数据
        //其一:查找并更新
        $user = \app\index\model\User::get(2);
        $user->username     = 'thinkphp';
        $user->email    = 'thinkphp@qq.com';
        $user->save();
        //其二:直接更新数据
        $user = new User;
        // save方法第二个参数为更新条件
        $user->save([
            'name'  => 'thinkphp',
            'email' => 'thinkphp@qq.com'
            ],['id' => 1]);
    }

删除官方文档模型删除

删除模型

$user = User::get(1);
$user->delete();

根据id删除字段

User::destroy(1);
// 支持批量删除多个数据
User::destroy('1,2,3');
// 或者
User::destroy([1,2,3]);

查询

与数据库的查询相差无异,官方文档模型查询

// 获取某个用户的积分
User::where('id',10)->value('score');    //value():单条字符串类型数据,跟find()方法类似
// 获取某个列的所有值
User::where('status',1)->column('name');  //column():返回数据集为索引数组,跟select()相似  

聚合(模型聚合查询)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django基于JAVA技术的旅游信息交互系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

[附源码]Python计算机毕业设计Django基于Java酒店管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

特征解耦,torch.cumprod(),np.random.seed(),plt.scatter

1.infoGAN 通常&#xff0c;我们学到的特征是混杂在一起的&#xff0c;如上图所示&#xff0c;这些特征在数据空间中以一种复杂的无序的方式进行编码&#xff0c;但是如果这些特征是可分解的&#xff0c;那么这些特征将具有更强的可解释性&#xff0c;我们将更容易的利用这些特…

BI-SQL丨MEGRE

MEGRE MEGRE语句&#xff0c;在SQL的生态圈中&#xff0c;一直都隶属于一个比较重要的位置。 要知道&#xff0c;在实际的项目应用中&#xff0c;我们经常需要从上游数据源&#xff0c;进行原始数据的抽取、清洗、存储、分析等操作&#xff0c;特别是在存储这一环节&#xff…

SpringCloud Ribbon / Feign

文章目录什么是Ribbon&#xff1f;Ribbon的作用&#xff1f;什么是Feign&#xff1f;Feign的作用&#xff1f;什么是Ribbon&#xff1f; Spring Cloud Ribbon 是基于Netflix Ribbon实现的一套客户端负载均衡的工具. Ribbon是Netflix发布的开源项目&#xff0c;主要功能是提供…

介绍HTTP

介绍 HTTP HTTP 协议用于客户端和服务器端之间的通信。请求访问资源的一端被称为客户端&#xff0c; 而提供资源响应的一端被称为服务器端。 HTTP 是一种不保存状态的协议&#xff0c;即无状态&#xff08;stateless&#xff09; 协议&#xff0c;它不对之前发生过的请求和响…

Kotlin高仿微信-第54篇-扫一扫

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点&#xff0c;包括&#xff1a;注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

安卓APP源码和报告——音乐播放器

课 程 设 计 报 告 院 系&#xff1a;专 业&#xff1a;题 目&#xff1a;科 目&#xff1a;学 生&#xff1a;指导教师&#xff1a;完成时间&#xff1a;目 录 1. 引言1 1.1 目的1 1.2 背景1 2. 需求分析1 3. 系统设计1 3.1总体设计1 3.2功能设计1 4. 系统开发2 4.1…

秋招经验分享:最终我还是选择了百度

点击进入—>3D视觉工坊学习交流群自我介绍感谢工坊的邀请&#xff0c;来做这次秋招经验的分享。本科和研究生都是自动化专业&#xff0c;研究生期间做移动机器人的定位方向&#xff0c;现在是百度的一名算法工程师&#xff0c;很喜欢现在的工作环境和氛围&#xff0c;强烈推…

【LeetCode每日一题】——72.编辑距离

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 字符串 二【题目难度】 困难 三【题目编号】 72.编辑距离 四【题目描述】 给你两个单词 word…

【Linux】常用的Linux命令(初学者必读)

一、学习Linux的原因 开源&#xff0c;免费系统迭代更新系统性能稳定安全性高多任务&#xff0c;多用户耗资源少内核小应用领域广泛使用及入门容易 二、Linux常用的命令 我使用的Linux环境是在 腾讯云服务器上的Centos 7和 Xshell。 下面我把常用的一些命令分成了几个部分&am…

VPS8505 微功率隔离电源专用芯片2.3-6VIN/24V/1A 功率管 替代金升阳模块

文章目录 前言一、是什么&#xff1f;二、特点三、应用领域四、简化应用五、引脚及功能六、参数测试电路 总结前言 隔离电源市场&#xff0c;一直被塑封模块产品占领&#xff0c;之前国内无专业 做隔离芯片的厂家&#xff0c;市场以模块厂进口芯片方案为主&#xff1b;…

深入 Java 线程池:从设计思想到源码解读

为什么需要线程池 我们知道创建线程的常用方式就是 new Thread() &#xff0c;而每一次 new Thread() 都会重新创建一个线程&#xff0c;而线程的创建和销毁都需要耗时的&#xff0c;不仅会消耗系统资源&#xff0c;还会降低系统的稳定性。在 jdk1.5 的 JUC 包中有一个 Execut…

从实用角度浅析前端全链路质量监控中台技术方案

大厂技术 高级前端 Node进阶点击上方 程序员成长指北&#xff0c;关注公众号回复1&#xff0c;加入高级Node交流群感谢作者陈煮酒的投稿。前言无论是纯前端业务还是服务端业务&#xff0c;线上质量的保障都是我们的底线要求&#xff0c;也是我们日常需要花费很多精力关注的环…

【大数据入门核心技术-Zookeeper】(五)ZooKeeper集群搭建

目录 一、准备工作 1、集群分布 2、创建数据目录 3、下载安装包 二、解压安装 1、解压 2、修改配置文件zoo.cfg 3、添加myid配置 4、分发zk文件夹和分别新建myid 5、配置环境变量 6、三台机器分别启动zookeeper服务 一、准备工作 1、集群分布 服务器IP主机名myid的…

有损压缩与无损压缩

有损压缩与无损压缩数据压缩有损压缩无损压缩有损压缩与无损压缩的区别Which One to Use?Final Words有损压缩、无损压缩&#xff08;图片、音频、视频&#xff09;图片文件格式音频文件格式视频文件格式数据压缩 数据压缩&#xff08;Data Compression&#xff09;是减小任何…

教你6招轻松搞定 网站被木马反复篡改

提到网络被恶意篡改&#xff0c;应该让很多做了百度竞价的企业官网怀恨已久了吧&#xff1f;这类行为的目的就是通过这些受害网站获得排名并跳转到违法网站&#xff0c;达到不法的目的。对于企业来说不但损失了百度竞价的费用&#xff0c;还对企业形象造成很大的影响。甚至直接…

【Flink】检查点算法实现原理之检查点分界线

一 检查点的实现算法 一种简单的想法&#xff08;同步的思想&#xff09; 暂停应用保存状态到检查点再重新恢复应用&#xff08;Spark Streaming&#xff09; Flink 的改进实现&#xff08;异步的思想&#xff09; 基于 Chandy-Lamport 算法的分布式快照算法将检查点的保存和数…

20221203使用python3处理Google翻译英文SRT格式字幕

20221203使用python3处理Google翻译英文SRT格式字幕 1、暂时不处理UNICODE编码的TXT&#xff0c;本例以ANSI编码的TXT为准。 2、将来处理自动处理目录中的全部TXT文件。&#xff08;甚至递归处理子目录中的TXT文件&#xff09; 源码&#xff1a; #f_pathrC:\Users\Admin\Desk…

如何解hard算法题?

如何解困难题&#xff1f;前言一、案例二、困难题拆解1、自己的思路2、官方的思路3、源码Javagolang总结参考文献前言 上一篇文章写bitCount源码解析&#xff0c;对困难题有一些抽象的理解。 困难题就是一个个简单的知识点组成&#xff0c;加上其内在的逻辑联系。所以一个困难…