cryptoman3 / doctrine-dbal-bulk
Doctrine DBAL 的批量插入和更新
1.x-dev
2023-07-24 12:17 UTC
Requires
- php: ~8.1 || ~8.2
- doctrine/dbal: ^2.13
This package is not auto-updated.
Last update: 2024-09-17 16:00:08 UTC
README
贡献
此仓库为只读状态,若要为 Flow PHP 项目做出贡献,请向 flow monorepo 打开 PR。
合并到 monorepo 的更改将自动传播到子仓库。
描述
Doctrine Bulk 缺少 Doctrine DBAL 的批量 upsert/insert 抽象。
安装
composer require flow-php/doctrine-dbal-bulk:1.x@dev
用法示例
插入
$bulk = Bulk::create(); $bulk->insert( $dbalConnection, 'your-table-name', new BulkData([ ['id' => 1, 'name' => 'Name One', 'description' => 'Description One'], ['id' => 2, 'name' => 'Name Two', 'description' => 'Description Two'], ['id' => 3, 'name' => 'Name Three', 'description' => 'Description Three'], ]) );
更新
$bulk = Bulk::create(); $bulk->update( $dbalConnection, 'your-table-name', new BulkData([ ['id' => 1, 'name' => 'Name One', 'description' => 'Description One'], ['id' => 2, 'name' => 'Name Two', 'description' => 'Description Two'], ['id' => 3, 'name' => 'Name Three', 'description' => 'Description Three'], ]), [ 'primary_key_columns' => ['id'], 'update_columns' => ['name'] ] );
支持方言
- PostgreSQL
添加新方言
Dialect 是该库的基本抽象。
Dialect 的主要作用是基于 BulkData 和提供的 options
准备 SQL 插入/更新语句。
$insertOptions
$updateOptions
选项是键 => 值映射,没有预定义的结构,允许操作构建 SQL 语句。每个方言都应该定义它自己的选项结构,以支持数据库引擎的功能,包括特定于给定引擎的功能。
QueryFactory 是创建查询的抽象,目前只有一个实现,DbalPlatform。QueryFactory 的 insertOptions
和 updateOptions
是所有支持方言提供的选项的组合,其中每个条目都是可选的。
示例: dialect_option?: string
DbalPlatform 是一个工厂,用于检测给定 Doctrine DBAL 平台应使用哪个方言。