2014-03-13 4 views
3

내 데이터베이스에있는 모든 테이블의 이름을 알아야합니다. 나는 내 ORM처럼 Propel을 사용하고있다. Actully 난이 양식에 노력하고있다.내 데이터베이스의 모든 테이블 이름 가져 오기

$dbmap = \Propel::getDatabaseMap('data'); 
    $tablastmp = $dbmap->getTables(); 
    $tablas = array(); 
    foreach ($tablastmp as $tablatmp) { 
     $tablas[] = $tablatmp->getName(); 
    } 
    echo '<pre>'; 
    print_r($tablas); 
    echo '</pre>'; 
    die(); 

그러나이 배열은 비어 있습니다.

array();

array([0] => 'clients', [1] => 'workers'); 

하십시오 누군가의 도움 :

와 나는 그런 돌려 뭔가를해야합니다. 나는 며칠 동안 그렇게 해왔다.

+0

'var_dump ($ tablastmp)'를하면 무엇을 반환합니까? – DOZ

+0

빈 배열 ... – fjbatresv

+0

여기에 설명되어있는 것처럼'getTableMap()'메서드로 시도하면 : [Doc propel] (http://propelorm.org/cookbook/runtime-introspection.html) – DOZ

답변

-1

$em = $this->getDoctrine()->getManager(); 
foreach ($em->getMetadataFactory()->getAllMetadata() as $md) { 
    var_dump($md->getName()); // dump the full class names 
    var_dump($md->getTableName()); // dump the table names 
} 
+0

의도에 감사드립니다 , 그러나 나는 그것을 사용할 수 없기 때문에 propel을 사용하고있다. – fjbatresv

0

사실, 당신은 아마 테이블이 실제로 사용될 때 추진는 테이블지도 정보를로드로이 정보를 얻을 추진을 사용하지 것이다 당신 (희망) 도움이 될 수 있습니다.

원본 스키마 파일은 빌드 단계 ('propel_gen om'등 실행 중)에서 사용됩니다. Propel의 런타임 부분은 결코 스키마 파일을 보지 않으므로 그 자체로 쿼리 할 방법이 없습니다.

귀하의 질문에 대한 답변은 데이터베이스를 확인하는 것입니다. 데이터베이스의 테이블을 나열하는 MySQL 쿼리 : SHOW [FULL] TABLES [{FROM | IN} db_name] [좋아하는 '패턴'| WHERE expr]

관련 문제