pmgdev/database-replicator-nette

该软件包已被废弃,不再维护。未建议替代软件包。

nette的数据库复制扩展。

v0.1.1 2019-09-06 09:15 UTC

This package is auto-updated.

Last update: 2022-01-18 16:55:41 UTC


README

Build Status Scrutinizer Code Quality Downloads this Month Latest stable Coverage Status

此仓库提供DatabaseReplicator并通过扩展更好地集成到nette。在此处记录了实现平稳运行所需的内容。

通过composer安装

composer require --dev pmgdev/database-replicator-nette

开始之前

当每个人都有不同的数据库布局时,这个扩展是抽象类DatabaseReplicatorExtension24

第一步你必须扩展这个类并实现方法buildDatabaseFactory。这很简单

use PmgDev\DatabaseReplicator\DatabaseReplicatorExtension24

class MyDatabaseReplicatorExtension extends DatabaseReplicatorExtension24
{

	protected function buildDatabaseConnection(
		DI\ServiceDefinition $database,
		string $name,
		string $replicatorService
	): void
	{
		$database
			->setFactory(MyConnectionDatabase::class)
			->setArguments([$replicatorService]);
	}

}

就这样,并注册新的扩展。

extensions:
	databaseReplicator: MyDatabaseReplicatorExtension # use our new extension class

databaseReplicator:
	sourceFile: %appDir%/../db/structure.sql
	admin:
		database: postgres
		username: postgres
		host: localhost
		password: dummy
		port: 5432
	connections:
		test_db: # source database name
			# all properties copy from admin
			username: user
			password: dummy
			# database: you can set other database name 
		test_data:
			# next test database with dummy data
	tempDir: %tempDir%
	# psql: # default is /usr/bin/psql

现在我们有可用的服务databaseReplicator.test_db.databasedatabaseReplicator.test_data.database,它们是PmgDev\DatabaseReplicator\Database的实例。

$database = $container->getService('databaseReplicator.test_db.database');
$connection = $database->create(); // create database
// make tests
$database->drop();