推进 - 检索所有表格

sit*_*lge 2 php oop orm propel

我想使用propel来获得所有模式表的输出.引用特定时TableMap

$users = UsersTableMap::getTableMap();
$map = $users->getDatabaseMap();
$tables = $map->getTables(); //yields an object, holds only Users table
Run Code Online (Sandbox Code Playgroud)

有没有办法使用特定的表(例如Users),但有更通用的方法?这里有一个过时的问题,面临同样的问题.

我应该进行自定义查询还是解析schema.xml以检索所有表?

更新

下面给出的一些解决方案作为答案产生空数组

$map = Propel::getServiceContainer()->getDatabaseMap(); //w & w/o string argument
$tables = $map->getTables(); //an empty array
Run Code Online (Sandbox Code Playgroud)

Mar*_*idt 6

当前版本2中无法通过一次调用检索所有表映射.原因:我们需要加载所有表格地图,这是令人难以置信的缓慢,我们没有完整的"地图"/"数组"列表,其中包含构建时可用的所有可用表格地图.然而,在Propel3中,这是可能的.

您应该遵循的唯一解决方案是解析schema.xml:如何检查表名在Propel中是否有效?

您还可以做的是使用反向类Propel来反转真实数据库.但是,这非常慢,因为它将一直读取整个数据库结构.请参阅https://github.com/propelorm/Propel2/issues/261#issuecomment-40659647