ThinkPHP数据库操作(Db)与模型操作(Model)区别

  Db类数据操作:性能略高一些,语法简单直观,但是不支持自动处理数据,自动验证,关联查询等功能,适合简单数据操作。

use think\facade\Db;

// 查询
Db::table('user')->where('id', 1)->find();

// 新增
Db::table('user')->insert([
    'name' => '张三',
    'age' => 20
]);

  模型操作(Model类)

  先创建模型:

// app/model/User.php
namespace app\model;
use think\Model;

class User extends Model
{
    // 支持定义自动时间戳,自动验证,关联查询,获取器,修改器等功能
}

  Model类数据操作:基于Db封装的面向对象层,需要先创建模型,看似更麻烦了,但是支持数据自动验证,自动时间戳,获取器,修改器,模型关联,软删除等功能,更适合复杂项目。

use app\model\User;

// 查询
User::find(1);

// 新增
$user = new User();
$user->name = '张三';
$user->age = 20;
$user->save();

  在实际项目中更推荐优先使用模型(Model),因为模型操作使用面向对象语法,代码更规范,更符合现代主流开发习惯。并且支持自动处理字段,时间,验证,关联查询。团队开发更统一,对开发复杂业务逻辑有巨大优势。

本站原创内容,转载请注明来源:https://www.liutonghui.com/178.html

心墙
上一篇 2019-08-03
使用 Layui 和 jQuery 实现表单验证
下一篇 2020-06-14

评论列表(0条)

  • 暂无评论

发表评论

captcha

相关推荐

  • PHP 使用 PDO 进行数据库操作

      PHP 7 已经彻底移除了对 MySQL 扩展的支持,推荐使用 PDO 进行数据库操作,PDO(PHP Data Objects)是一种安全且高效的方法,可以连接和操作多种数据库。PDO 提供了一个统一的接口,用于执行 SQL 查询和操作数据库。   准备一张测试表(以 MySQL 为例) CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userna......

    2016-10-03
    13932
  • MySQL转SQLite数据库注意事项

      平时开发中会遇到将MySQL转为SQLite数据库的情况,转换后多少都会出现一些报错问题,这是因为SQLite和MySQL的一些函数和语法不兼容,这些不兼容并不是很多,只需要简单修改一下就可以修复报错。   比如按随机数查询数据,在MySQL中可以这样写: $list = User::where('status', 1)->limit(10)->orderRaw('rand()')->select();   但是在......

    2017-04-29
    26520
  • PHP封装数据库操作Model类示例

      数据库操作是产品开发中最常见的需求,封装一个PHP数据库操作Model类可以减少反复的写大量SQL语句,下面就为大家分享一个数据库操作Model类。 <?php //引入配置文件 include "./config.php"; class Model { public $link;//存储连接对象 public $tableName = "";//存储表名 public $field =......

    2019-06-12
    21024
  • PHP文字水印,缩略图,图片水印实现类与用法示例

      本文实例讲述了PHP开发的文字水印,缩略图,图片水印实现类与用法。分享给大家供大家参考,具体如下:   1.实现类ImageToTest.class.php参考代码 class ImageToTest { /** * 图片的基本信息 */ private $info; private $image; public function __construct($src){ $info = getima......

    2020-08-22
    19940
  • ThinkPHP6开发wangEditor图片上传接口的方法

      wangEditor是一款近几年非常流行的富文本编辑器,它界面简洁,功能非常强大,本文介绍WangEditor图片上传接口的开发,以Thinkphp6为例。   首先看一下wangEditor官方的接口返回要求:   然后开发Thinkphp6的上传功能: public function testup(){ $file = request()->file('file'); $savename = \think......

    2021-03-02
    19030
  • ThinkPHP数据软删除及数据恢复功能

      ThinkPHP的软删除不是真正删除数据库数据,而是通过标记字段(如delete_time)记录删除状态,查询时自动过滤delete_time字段已标记删除的数据,支持数据恢复和真实删除,相当于为项目加了一个回收站功能,以避免数据被误删。   软删除依赖模型操作,不支持原生查询,需要数据表有删除标记字段(默认delete_time,类型:datetime/timestamp,允许null),需要引入ThinkPHP内置的SoftDe......

    2022-01-27
    10710
  • ThinkPHP获取数据库类型和版本的方法

      在开发后台功能时,可能会需要自动获取当前使用的数据库类型和版本的情况,下面就举个简单的例子实现自动获取当前项目使用的是MySQL还是SQLite数据库及使用的相应数据库版本的方法: // 数据库类型 $default = config('database.default'); $config = config('database.connections.' . $default); $db_type = strtolower(tri......

    2024-11-02
    8890
  • ThinkPHP路由简单配置

      ThinkPHP拥有丰富的路由配置功能,灵活的配置路由可以更好的优化URL结构,方便维护,下面简单介绍一下ThinkPHP路由配置方法。   ThinkPHP默认路由结构为/入口文件/应用/控制器/方法,因此就产生了这样一长串的URL结构: https://127.0.0.2/index.php/index/index/index   这还仅仅是首页URL,这样的结构显然不利于维护,更不利于SEO,所以需要做路由配置,以多应用为例,......

    2025-04-21
    7500