Skip to content

DiscuzXDB — Discuz!X 数据库访问类

  • 文件位置: kernel/Platform/DiscuzX/Foundation/Database/DiscuzXDB.php
  • 命名空间: kernel\Platform\DiscuzX\Foundation\Database
  • 继承: extends \DB(Discuz!X 全局数据库类)
  • 是否可继承: 否(静态工具类)

Discuz!X 全局数据库访问类 \DB 的增强封装,为框架查询构建器(DiscuzXQuery)结果提供便捷查询方法,以及事务控制。

方法

getOne — 查询单条记录(static)

php
public static function getOne($query)
  • $query(DiscuzXQuery):查询构建器

调用 $query->limit(1)->get() 生成 SQL 后执行 fetch_first,返回首行数组;无结果返回 null

getAll — 查询全部记录(static)

php
static function getAll($query = null)
  • $query(DiscuzXQuery):查询构建器

执行 $query->get() 生成的 SQL 后 fetch_all 返回全部行;无结果返回 []

count — 计数(static)

php
static function count($query)

执行 $query->sql()result_first 返回计数值。

exist — 判断存在(static)

php
static function exist($query)

内部调用 count(),返回计数值(非零即存在)。

insertId — 最后插入 ID(static)

php
static function insertId()

委托 \DB::insert_id() 返回自增 ID。

begin / commit / rollback — 事务控制(static)

php
static function begin()
static function commit()
static function rollback()

分别执行 \DB::query("BEGIN")\DB::query("commit")\DB::query("ROLLBACK")

使用

php
use kernel\Platform\DiscuzX\Foundation\Database\DiscuzXQuery;
use kernel\Platform\DiscuzX\Foundation\Database\DiscuzXDB;

$query = new DiscuzXQuery("gstudio_settings");

$row = DiscuzXDB::getOne($query->where("key", "site_name"));
$rows = DiscuzXDB::getAll($query->where("status", 1)->orderBy("id", "desc"));
$total = DiscuzXDB::count($query->count());

// 事务
DiscuzXDB::begin();
try {
  // ...
  DiscuzXDB::commit();
} catch (\Throwable $e) {
  DiscuzXDB::rollback();
}