sgomez / simplesamlphp-module-dbal
一个SimpleSAMLphp模块,增加对Doctrine/DBAL的支持。
2.0.3
2017-06-13 16:36 UTC
Requires
- php: >=5.5.9
- doctrine/dbal: ^2.5
- simplesamlphp/composer-module-installer: ^1.0
Requires (Dev)
- simplesamlphp/saml2: dev-master#f079abe36ab4101dfda654a087f8003a9673b952 as 2.4
- simplesamlphp/simplesamlphp: dev-master
README
本软件包通过SimpleSAMLphp模块安装,并使用Composer添加新的数据存储库(Doctrine/DBAL库)。安装可以通过执行以下命令完成:
composer require sgomez/simplesamlphp-module-dbal ~1.0 # for SSP >= 1.14
composer require sgomez/simplesamlphp-module-dbal ~2.0 # for SSP >= 2.0|master
配置
您需要在配置文件中指定下一个store.type
'store.type' => 'SimpleSAML\Modules\DBAL\Store\DBAL',
并将模板配置文件从modules/dbal/config-templates/module_dbal.php
复制到您的配置基本目录。您必须使用您的数据库连接配置编辑它。
本模块支持与Doctrine/DBAL相同的引擎。有关语法的详细信息,请参阅Doctrine DBAL配置。
$config = array (
'store.dbal.url' => 'mysql://user:password@localhost:3306/simplesamlphp?charset=utf8mb4&serverVersion=5.7',
// 'store.dbal.url' => 'sqlite:///simplesamlphp.sqlite',
);
如果您想自动清理旧密钥,请记住启用并配置cron模块。
创建模式
模式不是每次调用存储时都创建(如SQL存储)。您需要手动创建它。每次安装或更新使用DBAL存储的模块时,您都需要运行此命令。
bash$ vendor/bin/dbalschema
创建新模式
如果您想在模块中创建自己的模式,您需要在hooks目录中创建一个hook_dbal.php
文件。每次启动dbalschema时都会运行此文件。
这是一个模板
<?php
function modulename_hook_dbal(&$dbinfo)
{
$store = SimpleSAML_Store::getInstance();
if (! $store instanceof \SimpleSAML\Modules\DBAL\Store\DBAL ) {
throw new \SimpleSAML_Error_Exception('OAuth2 module: Only DBAL Store is supported');
}
$schema = new \Doctrine\DBAL\Schema\Schema();
$fooTable = $store->getPrefix().'_foo';
$foo = $schema->createTable($fooTable);
$foo->addColumn('id', 'string', [ 'length' => 255 ]);
$foo->addColumn('name', 'string', [ 'length' => 255 ]);
$foo->setPrimaryKey(['id']);
$barTable = $store->getPrefix().'_bar';
$bar = $schema->createTable($barTable);
$bar->addColumn('id', 'string', [ 'length' => 255 ]);
$bar->addColumn('expires_at', 'datetime');
$bar->addColumn('foo_id', 'string', [ 'length' => 255 ]);
$bar->setPrimaryKey(['id']);
$bar->addForeignKeyConstraint($foo, ['foo_id'], ['id'], ['onDelete' => 'CASCADE']);
$store->createOrUpdateSchema($schema, $store->getPrefix().'_modulename');
$dbinfo['summary'][] = 'Created ModuleName Schema';
}
Doctrine DBAL几乎在所有情况下都能更新您的模式而无需删除它。要了解所有类型和选项,请参阅Doctrine DBAL文档。