jarjak / dbal-manager
Doctrine DBAL 的助手库,用于在 MySQL 和其他数据库中批量导入数据。
v3.0
2019-04-20 10:30 UTC
Requires
- php: >=7.1
- ext-pdo: *
- doctrine/dbal: ^2.4
Requires (Dev)
- phpstan/phpstan: ^0.11
- phpunit/phpunit: ^7.0
- symfony/var-dumper: ^3.4|^4.0
- symplify/easy-coding-standard: ^5.4
Suggests
- ext-symfony_debug: even better way to nicely dump SQL queries
- symfony/var-dumper: DBALManager uses VarDumper to nicely dump SQL queries, however it fallbacks to var_dump
This package is auto-updated.
Last update: 2024-09-15 06:36:19 UTC
README
Doctrine DBAL 的助手类集合。它主要被用来简化批量导入的创建。它提供了一个方法,可以在 MySQL 兼容数据库上执行 INSERT ... ON DUPLICATE KEY UPDATE
查询,这是我一直在 Doctrine 的 MySQL 驱动中缺少的功能。
Symfony 安装
要在 Symfony 2/3 中使用此类,请参阅 DBALManagerBundle。
在 Symfony 4 中,由于自动装配,您无需使用扩展包,只需在您的 services.yaml
中添加以下行即可
services: _defaults: autowire: true JarJak\DBALManager: ~
与其他框架的集成
运行
composer require jarjak/dbal-manager
该类与 PSR-0/PSR-4 兼容,因此可以轻松地与其他现代框架集成。以下是一个 Silex 的示例
//Application.php $app['dbal_manager'] = $app->share(function ($app) { $manager = new JarJak\DBALManager($app['db']); return $manager; });
简单示例
您想插入数据,如果行已存在,则更新它们。
$sqlArray = [ 'id' => 1, 'username' => 'JohnKennedy', 'email' => 'john@kennedy.gov' ]; /* @var $manager JarJak\DBALManager */ $manager->insertOrUpdate('user', $sqlArray);
或者您只想跳过已存在的这一行
$manager->insertIgnore('user', $sqlArray);
高级示例
假设我们有一个用户表,具有
- 唯一的用户名和电子邮件列
- 列 active 只能包含 0 或 1(不可为空)
- 列 address 可以是空的
$sqlArray = [ 'username' => 'JohnKennedy', 'email' => 'john@kennedy.gov', 'password' => $password, 'address' => '', 'active' => 0, ]; /* @var $manager JarJak\DBALManager */ $manager->insertOrUpdate('user', $sqlArray, 2, ['active']);
查询导出
DBALManager 可以使用 VarDumper 将 QueryBuilder 准备好的 SQL 查询导出,可以直接复制粘贴到数据库服务器(参数已包含)。
/* @var QueryBuilder $queryBuilder */ \JarJak\SqlDumper::dumpQuery($queryBuilder);
如果您不使用 QueryBuilder,您仍然可以使用以下方式导出参数化的 SQL
\JarJak\SqlDumper::dumpSql($sql, $params);
测试
使用
composer run-script test
使用
composer run-script csfix