当前位置: 首页 > article >正文

ThinkPHP6的ORM模型

ThinkPHP6 是一个广泛使用的 PHP 框架,其 ORM(对象关系映射)模型是其核心功能之一。ORM 模型允许开发者通过面向对象的方式来操作数据库,极大地简化了数据库操作代码,提高了开发效率。

1. ORM 简介

ORM(Object-Relational Mapping)通过定义类及其属性与数据库表及字段之间的映射关系,使开发者可以用面向对象的方式操作数据库。ORM 通常具备以下功能:

  • 数据库的 CRUD(创建、读取、更新、删除)操作。
  • 自动处理 SQL 注入等安全问题。
  • 提供查询构造器,简化复杂查询。
  • 支持事务处理。

2. ThinkPHP6 ORM 使用

2.1 数据库配置

config/database.php 文件中配置数据库连接信息:

return [
    // 数据库类型
    'type'            => 'mysql',
    // 服务器地址
    'hostname'        => '127.0.0.1',
    // 数据库名
    'database'        => 'test',
    // 用户名
    'username'        => 'root',
    // 密码
    'password'        => '',
    // 端口
    'hostport'        => '3306',
    // 数据库编码默认采用utf8
    'charset'         => 'utf8',
    // 数据库表前缀
    'prefix'          => 'tp_',
    // 数据库调试模式
    'debug'           => true,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'deploy'          => 0,
    // 数据库读写是否分离 主从式数据库需要设置读写分离
    'rw_separate'     => false,
    // 读写分离后 主服务器数量
    'master_num'      => 1,
    // 指定从服务器序号
    'slave_no'        => '',
    // 是否严格检查字段是否存在
    'fields_strict'   => true,
    // 数据集返回类型
    'resultset_type'  => 'array',
    // 自动写入时间戳字段
    'auto_timestamp'  => false,
    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',
    // 是否需要进行SQL性能分析
    'sql_explain'     => false,
];
2.2 创建模型

app/model 目录下创建一个新的 PHP 文件,例如 User.php

<?php
namespace app\model;

use think\Model;

class User extends Model
{
    // 设置当前模型对应的完整数据表名称
    protected $table = 'tp_user';

    // 读取器:将数据库中的状态值转换为对应的汉字描述
    public function getStatusAttr($value)
    {
        $status = [0 => '禁用', 1 => '正常'];
        return $status[$value];
    }

    // 修改器:将传入的汉字状态转换为对应的数字存储入库
    public function setStatusAttr($value)
    {
        $status = ['禁用' => 0, '正常' => 1];
        return $status[$value];
    }
}
2.3 使用模型

在控制器或其他地方使用模型进行数据库操作:

<?php
namespace app\controller;

use app\BaseController;
use app\model\User;

class UserController extends BaseController
{
    public function index()
    {
        // 查询所有用户
        $users = User::select();

        // 查询单个用户
        $user = User::find(1);

        // 添加用户
        $data = [
            'name' => '新用户',
            'email' => 'newuser@example.com',
            'status' => '正常' // 使用修改器
        ];
        $newUser = User::create($data);

        // 更新用户
        $user = User::find(1);
        $user->name = '更新后的用户名';
        $user->save();

        // 删除用户
        $user = User::find(1);
        $user->delete();

        return json($users);
    }
}

3. 复杂查询

ThinkPHP6 的 ORM 还支持复杂的查询构造器,可以链式调用各种方法来构建 SQL 语句:

<?php
// 查询年龄大于 18 的用户
$users = User::where('age', '>', 18)->select();

// 查询名字为 '张三' 并且年龄大于 18 的用户
$users = User::where('name', '张三')->where('age', '>', 18)->select();

// 使用 or 条件查询
$users = User::where('name', '张三')->orWhere('email', 'like', '%example%')->select();

// 分页查询
$users = User::paginate(10);

4. 事务处理

ThinkPHP6 的 ORM 还支持事务处理,确保一组数据库操作要么全部成功,要么全部失败:

<?php
Db::transaction(function () {
    // 执行数据库操作
    User::create(['name' => '用户A', 'email' => 'userA@example.com']);
    User::create(['name' => '用户B', 'email' => 'userB@example.com']);
    // 如果中途抛出异常,事务会自动回滚
});

通过这些功能,ThinkPHP6 的 ORM 模型为开发者提供了一个强大且灵活的数据库操作工具,使得开发过程更加高效和安全。


http://www.kler.cn/a/400419.html

相关文章:

  • 在 CentOS 7 上安装 MinIO 的步骤
  • WPF的基础控件详解
  • 微信小程序-prettier 格式化
  • HBase 开发:使用Java操作HBase
  • django从入门到实战(三)——CBV视图介绍
  • 搭建Spring gateway网关微服务
  • hive-内部表外部表-详细介绍
  • Java 网络编程:Socket 与网络通信
  • Jtti:服务器总是自动重启怎么办?
  • 如何保存python文件
  • 最新6.7分非肿瘤纯生信,使用机器学习筛选慢阻肺中的关键基因。机器学习在非肿瘤生信文章中正火,可重复!
  • Python自动化DevOps任务入门
  • stm32学习笔记----51单片机和stm32单片机的区别
  • w043基于springboot的“衣依”服装销售平台的设计与实现
  • postgresql(功能最强大的开源数据库)继承特性和分区实现
  • STM32 ADC --- DMA乒乓缓存
  • Spark:大数据处理的强大引擎
  • Elasticsearch的查询语法——DSL 查询
  • 网页作业9
  • esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器
  • @JsonSerialize修复前端精度问题
  • 【Nginx从入门到精通】03 、安装部署-让虚拟机可以联网
  • executed_gtid_set 与 purged_gtid_set
  • Vue.插槽使用指南,实现高复用组件
  • uniapp开发微信小程序笔记2-开发静态页面(新建页面、内置组件、设置编译模式、样式、SCSS的使用)
  • `.mat`文件是一种由MATLAB(矩阵实验室Matrix Laboratory)创建的数据文件格式,也能用python打开