2015-10-19 5 views
1

Мне нужно, чтобы получить текущую и по умолчанию имя БД в CakePHP 3.Получить текущее имя базы данных - CakePHP 3

Я знаю, как его можно в CakePHP 2, но не может получить работу вокруг CakePHP 3. Я посмотрел в библиотека cakephp в datasource/connectionManager.php, но все же я не могу использовать какой-либо метод. Можете ли вы, пожалуйста, помочь мне узнать текущие настройки конфигурации соединений? Спасибо заранее.

+3

"_current_" является довольно расплывчатым термином (по аналогии относится и к "_default_", если вы не имеете в виду соединение с именем "по умолчанию") , поскольку в контексте поиска/запроса модели/таблицы есть только «текущая» база данных, и даже там одна находка, даже один запрос, может указывать на несколько разных баз данных. Поэтому вы можете уточнить, что именно вы подразумеваете под «_current_»! – ndm

+0

«current» - это БД, на которой я вызываю класс модели. Я могу создать несколько БД на лету. Поэтому я хочу, чтобы имя базы данных использовалось в настоящее время. Давайте просто скажем, на данный момент я могу иметь только имя базы данных по умолчанию. –

+0

$ SomeModel-> connection() -> configName() – ADmad

ответ

4

Я нашел свой ответ после изучения некоторых основных файлов cakephp. Плюс ответ Адама дал мне подсказку. Я нашел два способа сделать это.

Способ 1: Использование текущей модели объекта.

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

даст конфигурации, и,

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

даст имя текущей базы данных.

Способ 2: Использование объекта источника данных.

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

Config: $dataSourceObject->config();

Текущее Имя базы данных: $dataSourceObject->config()['database'];

+0

Да, мой предыдущий комментарий был в основном предназначен как подсказка, чтобы дать вам представление о том, как получить экземпляр соединения. Вот почему это был комментарий, а не ответ :) – ADmad

+0

Спасибо за подсказку :) –

Смежные вопросы