我想使用 propel 获得所有模式表的输出。当引用特定的TableMap
$users = UsersTableMap::getTableMap();
$map = $users->getDatabaseMap();
$tables = $map->getTables(); //yields an object, holds only Users table
有没有办法不使用特定的表(例如用户
),但有更通用的方法?有一点过时了question here面临同样的问题。
我应该进行自定义查询还是解析 schema.xml
来检索所有表?
更新
下面给出的一些解决方案作为答案会产生空数组
$map = Propel::getServiceContainer()->getDatabaseMap(); //w & w/o string argument
$tables = $map->getTables(); //an empty array
最佳答案
当前版本 2 中无法通过一次调用检索所有表映射。原因:我们需要加载所有表映射,这非常慢,而且我们没有包含构建时可用的所有可用表映射的总“映射”/“数组”列表。然而在 Propel3 中,这是可能的。
您应该遵循的唯一解决方案是解析 schema.xml:How do I check if table names are valid in Propel?
您还可以做的是使用 Propel 的反向类来反转真实数据库。然而,这非常慢,因为它会一直读取整个数据库结构。请参阅https://github.com/propelorm/Propel2/issues/261#issuecomment-40659647
关于php - Propel - 检索所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37758283/