2010-05-14 3 views
0

원시 SQL 쿼리를 실행해야하지만 각 환경에서 데이터베이스 이름이 변경됩니다 (라이브 : db, dev db_test)Symfony 1.2에서 propel의 database.yml 파일에서 현재 데이터베이스 이름을 얻으려면 어떻게해야합니까?

databases.yml 파일에서 현재 데이터베이스 이름을 가져와야합니다.

어떻게 현재 데이터베이스 이름을 얻을 수 있습니까? 나는 추진 ORM 처음

+0

현재 데이터베이스 연결을 사용할 수 있습니까, 아니면 직접 연결을 만들려면 데이터베이스 이름이 필요합니까? "일반"Propel을 사용한다면'Propel :: getConnection()'을 사용하여 PDO 연결을 얻을 수 있습니다. Symfony에서도 이것을 할 수 있습니다. –

답변

2

을 사용하고

나는이 sfPropelDatabase::getConfiguration()를 통해 아주 쉽게 될 것이라고 생각하지만 배열을 반환합니다. 따라서, 나는 데이터를 얻을 수있는 결과를 분석했고, 나는이보다 아마 더 좋은 방법이 있다고 생각 :

$propel_config = sfPropelDatabase::getConfiguration(); 
preg_match('/dbname=([^;]+);/', $propel_config['propel']['datasources']['propel']['connection']['dsn'], $matches); 
echo $matches[1]; 

누구나 더 나은 것도있어?

+0

yaml 파일에 대한 덤프를 얻는 것 외에 더 많은 제어가 있다면 정말 좋을 것입니다. ';'을 제거해야했습니다. dbname은 마지막 문자 였으므로 위의 정규 표현식에서 문자열의 끝에서 찾을 수 없습니다. – Failpunk

0

다음 코드는 Propel2에서 작동합니다 - 본질적으로 허용되는 대답과 동일합니다.

관련 문제