我需要获取数据库中存在的所有表的名称。我就像我的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' );
请有人帮忙。我已经尝试了几天。
答案 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
}