【问题标题】:PHP ActiveRecord - How to list out the all table names of a MySql database? [closed]PHP ActiveRecord - 如何列出 MySql 数据库的所有表名? [关闭]
【发布时间】:2013-02-25 12:11:56
【问题描述】:

我在我的应用程序中使用PHP ActiveRecord

如何列出数据库的所有表名

这里我已经配置了数据库的连接如下

require_once ActiveRecordDIR.'/ActiveRecord.php';
ActiveRecord\Config::initialize(function($cfg){


    $cfg->set_model_directory('core/models');
    $cfg->set_connections(array('development' =>'mysql://root:pass@localhost/dbname'));
});

在此之后我想列出数据库“dbname”中的所有表名

【问题讨论】:

  • 问题在哪里?您尝试过什么,问题出在哪里?
  • 我认为问题在于使用 PAR ORM 执行自定义查询。
  • 在自定义查询中我们只能访问指定的表;但我想要数据库的所有表名
  • George 不知道如何使用该方法,这就是问题所在。你能帮我吗

标签: php mysql phpactiverecord


【解决方案1】:

Connection::tables() 方法返回数据库中所有表的数组。然后您可以 foreach 数组来检索表名。

【讨论】:

  • George 不知道如何使用该方法,这就是问题所在。你能帮我写一些脚本吗?
  • 好吧,如果你有 Connection $test = new Connection();然后你做 $tables = $test->tables();并且表名存储在一个数组中......如果您需要从数组中检索,您可以在该数组上执行foreach
  • 这个问题是Class Connection是一个抽象类,所以我们不能实例化它
  • 你不应该实例化它,你应该通过扩展 ActiveRecord\Model 的类来调用它。我将它展示为一个实例来解释它通常是如何工作的。你可以叫它Test::tables();
  • 我尝试使用 => ActiveRecord\Connection::query("SHOW TABLES");但它显示错误 => 严格标准:不应静态调用非静态方法 ActiveRecord\Connection::query()
【解决方案2】:

Active Record 表示单个表中的单行并向其添加业务逻辑,因此在模式方面应该无法从 ActiveRecord 查询数据库中的所有表,因为没有用例在模式中。

但是,根据该框架的文档,您可以使用

因此使用原始 SQL 来获取所有表名。我让你知道 SQL。

还有一种方法

这可能正在做你想做的事情。

【讨论】:

  • 这是非常正确的。我喜欢你如何查看文档并找到一种非常直接的方法来做到这一点。 @Kaviarasan ActiveRecord\Connection::instance()->query_for_tables().
  • $tab = ActiveRecord\Connection::instance()->query('show tables'); $tabs = $tab->fetchAll(); print_r($tabs);
【解决方案3】:
YourModel::find_by_sql("SELECT `TABLE_NAME` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA`=?",array('YOUR_DB_NAME'));

【讨论】:

  • 谢谢很多。它提供表名;但是在设置到数据库的连接之后,我想显示表名;不使用任何模型;任何想法PLZ
猜你喜欢
  • 2016-10-17
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 2014-04-07
  • 2014-02-25
  • 1970-01-01
相关资源
最近更新 更多