자신의 driver_class를 구현하여 사용하고 PDO DriverOptions에서 search_path를 전달할 수 있습니다 (예 : 당신의 심포니 설정에 :
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_pgsql
driver_class: YourNamespace\YourBundle\Doctrine\DBAL\Driver\PDOPgSql\Driver
options:
search_path: YOUR_SEARCH_PATH
이 드라이버는 다음과 같이 보일 수 있습니다 : \ 교리 \ DBAL \ 드라이버 \ PDOPgSql \ 보호로 정의되어 있지 않기 때문에 당신은 _constructPdoDsn 방법이 필요
namespace YourNamespace\YourBundle\Doctrine\DBAL\Driver\PDOPgSql;
use Doctrine\DBAL\Platforms;
class Driver extends \Doctrine\DBAL\Driver\PDOPgSql\Driver implements \Doctrine\DBAL\Driver
{
public function connect(array $params, $username = null, $password = null, array $driverOptions = array())
{
// ADD SOME ERROR HANDLING WHEN THE SEARCH_PATH IS MISSING...
$searchPath = $driverOptions['search_path'];
unset($driverOptions['search_path']);
$connection = new \Doctrine\DBAL\Driver\PDOConnection(
$this->_constructPdoDsn($params),
$username,
$password,
$driverOptions
);
$connection->exec("SET SEARCH_PATH TO {$searchPath};");
return $connection;
}
/**
* Constructs the Postgres PDO DSN.
*
* @return string The DSN.
*/
protected function _constructPdoDsn(array $params)
{
$dsn = 'pgsql:';
if (isset($params['host']) && $params['host'] != '') {
$dsn .= 'host=' . $params['host'] . ' ';
}
if (isset($params['port']) && $params['port'] != '') {
$dsn .= 'port=' . $params['port'] . ' ';
}
if (isset($params['dbname'])) {
$dsn .= 'dbname=' . $params['dbname'] . ' ';
}
return $dsn;
}
}
을 운전사. 우리가 PDO DriverOptions를 사용하고 있으며 그것이 좋은 방법인지 확실하지 않기 때문에 약간 "해킹"입니다.하지만 작동하는 것 같습니다.
희망이 도움이됩니다.
안부,
Patryk
Symfony2는 doctrine을 사용하기 때문에 똑같은 방식으로 해결할 수 있습니다. – hakre
예. 하지만 내가 어디에 연결해야하는지 모르겠다. (imfony2를 처음 접했을 때 ... –
EntityManager를 찾으십시오. 아무런 변화가 없다면, grep은 친구입니다. – hakre