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


    定义

    定义一个模型类

    1. namespace app\index\model;
    2. use think\Model;
    3. //定义一个User模型类
    4. class User extends Model{
    5. //默认主键为自动识别,如果需要指定,可以设置属性
    6. //protected $pk = 'uid'; //$pk代表主键,primary key的缩写
    7. }

    模型调用的常用两种方法

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

    官方文档中其他两种

    模型调用的其他两种方法

     拓展

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

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

     不同点:

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

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

    api中的success()

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

    模型的初始化

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

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

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

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

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

    新增

    实例化对象

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

     静态方法

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

    更新

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

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

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

    1. //save()更新数据与保存数据
    2. public function modelTest2(){
    3. //保存数据
    4. $userModel = new \app\index\model\User;
    5. $userModel->username = 'lisi';
    6. $userModel->save();
    7. //修改数据
    8. //其一:查找并更新
    9. $user = \app\index\model\User::get(2);
    10. $user->username = 'thinkphp';
    11. $user->email = 'thinkphp@qq.com';
    12. $user->save();
    13. //其二:直接更新数据
    14. $user = new User;
    15. // save方法第二个参数为更新条件
    16. $user->save([
    17. 'name' => 'thinkphp',
    18. 'email' => 'thinkphp@qq.com'
    19. ],['id' => 1]);
    20. }

    删除官方文档模型删除

    删除模型

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

    根据id删除字段

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

    查询

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

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

    聚合(模型聚合查询

  • 相关阅读:
    uni-app——項目day01
    第02章 SpringBoot概述
    使用腾讯云轻量应用服务器安装宝塔面板建站使用教程
    VCRUNTIME140_1.dll是什么?VCRUNTIME140_1.dll缺失的7个不同解决方法详解
    算力时代,算能(SOPHGO)的算力芯片/智算板卡/服务器选型
    论文阅读 - Coordinated Behavior on Social Media in 2019 UK General Election
    三角定位是什么
    IntelliJ IDEA 2023.2 主要更新了什么?(纯文本介绍版)
    SQL 入门语句 本人最喜欢用的简短语句
    ReentrantLock实现公平锁,可中断,条件变量,可重入案例
  • 原文地址:https://blog.csdn.net/qq_53457276/article/details/128159015