获取我的数据库中所有表的名称

时间:2014-03-13 14:39:23

标签: symfony propel

我需要获取数据库中存在的所有表的名称。我就像我的ORM一样在推进。实际上,我一直在尝试这种形式。

$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( [0] => 'clients', [1] => 'workers' );

请有人帮忙。我已经尝试了几天。

2 个答案:

答案 0 :(得分:0)

实际上,您可能不会使用Propel来获取此信息,因为Propel仅在实际使用表时加载表格地图信息。

原始Schema文件在构建阶段使用(运行&#39; propel_gen om&#39;等)。 Propel的运行时部分从不查看Schema文件,因此无法自行查询。

您的问题的答案是查看数据库,例如MySQL查询列出数据库中的表:     显示[FULL] TABLES [{FROM | IN} db_name]          [喜欢&#39;模式&#39; | WHERE expr]

答案 1 :(得分:-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
}