首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >这可能是目前 PHP 最好的 DBAL

这可能是目前 PHP 最好的 DBAL

作者头像
Tinywan
发布2026-07-01 12:28:12
发布2026-07-01 12:28:12
800
举报
文章被收录于专栏:开源技术小栈开源技术小栈

Yii 数据库 2.0

Yii 数据库 2.0,这是一个重大版本,它现代化了数据库抽象层,引入了 PHP 8.1+ 的特性、增强的类型安全性和强大的新功能。驱动程序也已发布:PostgreSQL 、MySQL/MariaDB 、MSSQL 、Oracle 和 SQLite 。

新功能

  • 根据数据库表列的数据类型实现 ColumnInterface 类,以提升类型转换性能
  • 用于连接管理的 ConnectionProvider
  • 用于列创建的 ColumnBuilder
  • 用于 CASE-WHEN-THEN-ELSE 语句的 CaseX 表达式
  • 新的条件:All、None、ArrayOverlaps、JsonOverlaps
  • 支持 PHP 后备枚举
  • 用户定义的类型转换
  • ServerInfoInterface 及其实现

增强功能

  • 优化的 SQL 生成和查询构建
  • 使用 Psalm 注解改进类型安全
  • 列类的链式方法调用
  • 更好的异常消息
  • 重构核心组件以提高可维护性
  • 支持 PHP 8.5

安装

通过 composer 安装

代码语言:javascript
复制
composer require yiisoft/db yiisoft/db-sqlite

说明:您必须安装 yiisoft/db 以及至少一个数据库驱动程序(例如 yiisoft/db-mysqlyiisoft/db-pgsqlyiisoft/db-sqlite 等)才能实际连接到数据库。

基本使用

要连接到数据库,请创建适当驱动程序的实例:

代码语言:javascript
复制
use Yiisoft\Db\Sqlite\Connection;
use Yiisoft\Db\Sqlite\Driver;
/**
* @var Psr\SimpleCache\CacheInterface $cache
*/
// 创建数据库连接
$db = new Connection(
    new Driver(
        'sqlite:memory:'
    ),
    new SchemaCache(
        $cache
    ),
);

然后,您可以使用 $db 对象来执行 SQL 查询、管理事务并执行其他数据库操作。 以下是一些示例:

代码语言:javascript
复制
use Yiisoft\Db\Connection\ConnectionInterface;

/**
 * @var ConnectionInterface $db
 */

// Query builder
$rows = $db 
    ->select(['id', 'email'])  
    ->from('{{%user}}')  
    ->where(['last_name' => 'Smith'])  
    ->limit(10)  
    ->all();

// Insert
$db->createCommand()
    ->insert(
        '{{%user}}',
         [
            'email' => 'mike@example.com',
            'first_name' => 'Mike',
            'last_name' => 'Smith',
         ],
    )
    ->execute();

// Transaction
$db->transaction(
    staticfunction (ConnectionInterface $db) {
        $db->createCommand()
            ->update('{{%user}}', ['status' => 'active'], ['id' => 1])
            ->execute();
        $db->createCommand()
            ->update('{{%profile}}', ['visibility' => 'public'], ['user_id' => 1])
            ->execute();
    }
)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Yii 数据库 2.0
    • 新功能
    • 增强功能
  • 安装
  • 基本使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档