IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 为什么推荐优先使用模型(二) -> 正文阅读

[游戏开发]为什么推荐优先使用模型(二)

提供了时间戳的自动写入

使用模型可以自动填充时间戳
如果不使用model,改用Db类需要手动填写

提供了搜索器

将常用查询条件封装到模型中去
减少查询代码的重复
假设订单(order)可以通过状态(status),订单号(order_numer),总价进行查询(total)

创建搜索器

    # Order模型中 添加搜索器
    # 命名规则 search + 搜索器名称(首字母大写) + Attr
    # $data 是 通过 model::withSearch($fields,$data) 传入的$data
    public function searchOrderNumberAttr($query, $value, $data)
    {
        if (!empty($value)) {
            $query->whereLike('order_number', "%$value%");
        }
    }

    public function searchStatusAttr($query, $value, $data)
    {

        if ($value === 0 || $value === 1) {
            $query->where('status', $value);
        }
    }

    public function searchTotalAttr($query, $value, $data)
    {
        $query->where('total', $value);
    }

使用搜索器

        # 通过 model::withSearch($fields,$data) 使用搜索器 给模型带上搜索条件
        # $data 对应搜索器中传入的$data
        # SELECT * FROM `order` WHERE `order_number` LIKE '%hello_world%' AND `status` = 1 AND `total` = 2022 LIMIT 1
        Order::withSearch(['order_number', 'status', 'total'], [
            'order_number' => 'hello_world',
            'status' => 1,
            'total' => 2022,
        ])->find();

提供了模型关联

可以快速查询获取关联数据
进行一些简单的数据过滤(hasWhere)

模型的select返回的是think\model\Collection 对象

其中封装了很多常用方法
功能强大

        # model select 返回的是think\model\Collection 对象
        # 其中封装了很多的常用方法
        $order = Order::where('status', 1)->select();

        # 循环 ,其他的自己去看文档
        $order->each(function ($order) {
            /**@var $order Order * */
            echo $order->order_number . '<br/>';
        });

提供了类型转换

以个人定制款式数据表为例,款式详情(order.style_info)
使用Db类操作的话,读取(json_decode),存入(json_encode)

DB类插入&读取

        # 插入款式数据 需要主动json_encode()
        Db::name('order')->save([
            'order_number' => 'order',
            'created_at' => date('Y-m-d H:i:s'),
            'updated_at' => date('Y-m-d H:i:s'),
            'style_info' => json_encode(['height' => 183]),
        ]);

        # 取出 需要主动json_decode()
        $order = Db::name('order')->find(3);
        dd(json_decode($order['style_info'], true));

使用模型类型转换

    # 在模型中声明,这里在Order模型中
    # 声明类型转换
    # 字段 => 字段类型
    # 模型新增和修改会自动转换数据类型
    # 以style_info 为例
    # 读取时将数据库中的类型转换成array
    # 新增时传入array类型转换成数据库中的类型
    protected $type = [
        'style_info' => 'array',
    ];
    
    # 使用
    # 创建不需要手动json_encode
    Order::create([
        'order_number' => 'order_number_1',
        'style_info' => ['height' => 183],
    ]);

    # 读取不需要手动json_decode
    $order = Order::find(3);
    dd($order->style_info);
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-05-02 13:31:36  更:2022-05-02 13:32:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:49:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码