dflydev/identity-generator-dbal

提供身份生成器数据存储的 Doctrine DBAL 实现。

v1.0.1 2012-10-15 02:48 UTC

This package is auto-updated.

Last update: 2024-08-29 03:36:39 UTC


README

提供身份生成器数据存储的 Doctrine DBAL 实现。更多信息请参阅:dflydev/identity-generator

要求

  • PHP 5.3+
  • Doctrine DBAL 2.2.*

实现细节

此简单的 dflydev/identity-generator 数据存储实现依赖于盲目地向数据库插入记录。

它基于假设,如果底层数据库为身份列或身份列和 mob 列配置了唯一约束,将会抛出异常。

它尝试捕获此异常,并确定是否存在底层连接故障或是因为约束违反。它通过查找 ANSI SQL 错误状态码 23000 来实现。

模式

以下是与该数据存储一起工作的数据库模式的简单示例。它们可能适用于您的测试,但请勿盲目用于生产。

SQLite

如果不需要 mobs,只需创建一个标记为 unique 的单列表。

CREATE TABLE identity (
    identity string(64) unique
);

如果需要 mobs,创建一个包含两列的表,并在两列上创建唯一约束。

CREATE TABLE identityWithMob (
    identity string(64),
    mob string(64),
    constraint id unique (identity, mob)
);

Mysql

如果不需要 mobs,只需创建一个标记为 unique 的单列表。

CREATE TABLE identity (
    identity varchar(64) unique
);

如果需要 mobs,创建一个包含两列的表,并在两列上创建唯一索引。

CREATE TABLE identityWithMob (
    identity varchar(64),
    mob varchar(64),
    unique index (identity, mob)
);

用法

use Dflydev\IdentityGenerator\DataStore\Dbal\DataStore;
use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\DriverManager;

$config = new Configuration();
$connectionParams = array(); // driver specific connection configuration
$connection = DriverManager::getConnection($connectionParams, $config);

// Create a Data Store that does not support a mob.
$dataStore = new DataStore(
    $connection,
    'tableName',
    'identityColumnName'
);

// Create a Data Store that supports a mob.
$dataStoreWithMob = new DataStore(
    $connection,
    'tableName',
    'identityColumnName',
    'mobColumnName'
);

许可

此库根据新 BSD 许可证许可 - 详细信息请参阅 LICENSE 文件。

社区

如果您有疑问或想帮忙,请加入 irc.freenode.net 的 #dflydev 频道。