Added support for schmea tool filtering
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
namespace Common;
|
namespace Common;
|
||||||
|
|
||||||
use Doctrine\Common\Proxy\AbstractProxyFactory;
|
use Doctrine\Common\Proxy\AbstractProxyFactory;
|
||||||
|
use Doctrine\DBAL\Schema\AbstractNamedObject;
|
||||||
use Doctrine\ORM\ORMSetup;
|
use Doctrine\ORM\ORMSetup;
|
||||||
use Doctrine\ORM\EntityManager;
|
use Doctrine\ORM\EntityManager;
|
||||||
use Doctrine\DBAL\DriverManager;
|
use Doctrine\DBAL\DriverManager;
|
||||||
@@ -18,8 +19,14 @@ use RuntimeException;
|
|||||||
*/
|
*/
|
||||||
class EntityManagerFactory
|
class EntityManagerFactory
|
||||||
{
|
{
|
||||||
public static function create(array $params, bool $dev_mode = false, array $middlewares = [], array $filters = [], array $event_subscribers = []) : EntityManager
|
public static function create(
|
||||||
{
|
array $params,
|
||||||
|
bool $dev_mode = false,
|
||||||
|
array $middlewares = [],
|
||||||
|
array $filters = [],
|
||||||
|
array $event_subscribers = [],
|
||||||
|
array $skip_names_in_schema_tool = []
|
||||||
|
) : EntityManager {
|
||||||
self::checkRequiredParams($params, ['paths', 'database', 'proxy_dir']);
|
self::checkRequiredParams($params, ['paths', 'database', 'proxy_dir']);
|
||||||
|
|
||||||
// workaround for doctrine console commands requiring active database connection -
|
// workaround for doctrine console commands requiring active database connection -
|
||||||
@@ -28,7 +35,7 @@ class EntityManagerFactory
|
|||||||
if (defined('STDIN') && @$_SERVER['argv'][1] == 'orm:generate-proxies') {
|
if (defined('STDIN') && @$_SERVER['argv'][1] == 'orm:generate-proxies') {
|
||||||
$params['database']['serverVersion'] = '14';
|
$params['database']['serverVersion'] = '14';
|
||||||
}
|
}
|
||||||
|
w
|
||||||
$paths = $params['paths'];
|
$paths = $params['paths'];
|
||||||
$connection = $params['database'];
|
$connection = $params['database'];
|
||||||
|
|
||||||
@@ -44,6 +51,16 @@ class EntityManagerFactory
|
|||||||
}
|
}
|
||||||
|
|
||||||
$connection = DriverManager::getConnection($params['database'], $config);
|
$connection = DriverManager::getConnection($params['database'], $config);
|
||||||
|
|
||||||
|
// add schema access filter, if passed - this allows for controlling which object in database are considered
|
||||||
|
// by doctrine when generating SQL scripts to sync with metadata
|
||||||
|
if ($skip_names_in_schema_tool) {
|
||||||
|
$connection->getConfiguration()->setSchemaAssetsFilter(function (AbstractNamedObject|string $object) use ($skip_names_in_schema_tool) {
|
||||||
|
$object_name = is_string($object) ? $object : $object->getObjectName()->toString();
|
||||||
|
return !in_array($object_name, $skip_names_in_schema_tool);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$em = new EntityManager($connection, $config);
|
$em = new EntityManager($connection, $config);
|
||||||
|
|
||||||
if ($event_subscribers) {
|
if ($event_subscribers) {
|
||||||
|
|||||||
Reference in New Issue
Block a user