【问题标题】:Get current database name - cakephp 3获取当前数据库名称 - cakephp 3
【发布时间】:2015-10-19 11:53:12
【问题描述】:

我需要在 cakephp 3 中获取当前和默认的数据库名称。

我知道它在 cakephp 2 中是如何可能的,但无法解决 cakephp 3 的问题。 我已经查看了 datasource/connectionManager.php 中的 cakephp 库,但我仍然无法使用任何方法。 您能帮我找出当前的连接配置详细信息吗? 提前致谢。

【问题讨论】:

  • "current" 是一个相当模糊的术语(类似于“default”,除非您指的是名为“default”的连接) ,因为模型/表查找/查询上下文中只有一个“当前”数据库,即使有一个查找,甚至一个查询,也可能指向多个不同的数据库。因此,您可能需要详细说明“current”的确切含义!
  • "current" 这里是我调用模型类的数据库。我可以即时创建多个数据库。所以我想要当前使用的数据库名称。可以说,现在我只能使用默认数据库名称。
  • $SomeModel->connection()->configName()
  • @ADmad 这给了我当前的连接名称。我需要使用当前的数据库名称。例如: $SomeModel->connection()->configName() 给了我“默认”。我需要在“默认”中使用数据库。

标签: php cakephp


【解决方案1】:

在查看了一些核心 cakephp 文件后,我找到了答案。加上 ADmad 的回答给了我一个提示。我找到了两种方法。

方法一:使用当前模型对象。

$this->{$modelName}->connection()->config();

将给出配置,并且,

$this->{$modelName}->connection()->config()['database'];

将给出当前数据库名称。

方法二:使用数据源对象。

$dataSourceObject = ConnectionManager::get($connectionName); // $connectionName can be 'default'

配置:$dataSourceObject->config();

当前数据库名称:$dataSourceObject->config()['database'];

【讨论】:

  • 是的,我之前的评论主要是作为提示,让您了解如何获取连接实例。这就是为什么它是评论而不是答案:)
  • 感谢您的提示 :)
【解决方案2】:

如果您使用的是旧版本的 CakePHP(我的是 2.4.6),您也可以使用:

ConnectionManager::$config->default['database']

您可以通过以下方式加载 ConnectionManager:

App::uses('ConnectionManager', 'Model');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多