dflydev / identity-generator-dbal
提供身份生成器数据存储的 Doctrine DBAL 实现。
v1.0.1
2012-10-15 02:48 UTC
Requires
- php: >=5.3.2
- dflydev/identity-generator: 1.*
- doctrine/dbal: >=2.2.3,<2.4-dev
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 频道。