jarjak/dbal-manager

Doctrine DBAL 的助手库,用于在 MySQL 和其他数据库中批量导入数据。

v3.0 2019-04-20 10:30 UTC

This package is auto-updated.

Last update: 2024-09-15 06:36:19 UTC


README

SensioLabsInsight Build Status

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