php - Propel - 检索所有表

标签 php oop orm propel

我想使用 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/

相关文章:

php - 主机名可以注入(inject)SQL吗?

c++ - 在 C++ 中什么时候应该使用类还是结构?

java - 为什么我们需要 FileInputStream in = null; try block 之前的行?

java - 使用 JPA 指定索引(非唯一键)

java - Hibernate:继承映射到遗留数据库

java - EntityManager的createNativeQuery可以返回结果类即dojo类

php - 数据库未定义索引

php - 从提取的 PDF 文本中删除多余的空格

php - 如何通过另一列mysql查找邻居顺序

c++ - 你能显式地使用祖先的虚类方法作为派生方法吗?