网络语言系列&php系列【仅供参考】:ThinkPHP6的ORM模型




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 模型为开发者提供了一个强大且灵活的数据库操作工具,使得开发过程更加高效和安全。







ac-er8888

ThinkPHP6的ORM模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值