Как указать конфигурацию базы данных в CakePHP 2.0.2?

#php #cakephp #cakephp-2.0 #cakephp-model

#php #cakephp #cakephp-2.0 #cakephp-модель

Вопрос:

Я только что установил CakePHP 2.0.2 для использования в новом проекте. Я пытаюсь использовать конфигурацию базы данных с именем development , но моя модель, похоже, не улавливает ее.

Основываясь на новых соглашениях об именах каталогов и файлов CakePHP 2, я создал следующее в /app/Model/AppModel.php :

 <?php
class AppModel extends Model {

    public $useDbConfig = 'development';
}
  

Однако домашняя страница по умолчанию сообщает мне:

Cake НЕ может подключиться к базе данных.

Тем не менее, если я изменю имя конфигурации в /app/Config/database.php на default , сообщение изменится на сообщение об успешном завершении, как будто оно не принимает мой пользовательский AppModel класс.

Как я могу это исправить? Как указано в новых документах CakePHP 2.0, использовать $useDbConfig свойство, как я сделал выше?

РЕДАКТИРОВАТЬ: Содержимое /app/Config/database.php :

 class DATABASE_CONFIG {

    public $development = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'root',
        'password' => '',
        'database' => 'cakephp_db',
        'prefix' => '',
        'encoding' => 'utf8',
    );
}
  

Комментарии:

1. Можете ли вы показать свой database.php ?

2. Конечно. Я отредактировал вопрос, чтобы теперь показать содержимое файла.

Ответ №1:

Как объяснил дхофстет, вам все равно нужно иметь конфигурацию по умолчанию. Что я делаю, так это добавляю конструктор в класс DATABASE_CONFIG для переключения между конфигурациями базы данных.

Что-то вроде этого…

 public function __construct()
{
    if (DEV_SERVER) {
        $this->default = $this->development;
    } else {
        $this->default = $this->production;
    }
}
  

Комментарии:

1. Я видел эту информацию, возможно, это то, что я ищу. Это работает для какого cakephp #? А также используете ли вы это в database.php ?

2. @zeflex Это работает в версиях 1 и 2. Да, это относится к классу DATABASE_CONFIG в Config/database.php файл.

Ответ №2:

Ваша конфигурация базы данных, скорее всего, правильная.

Причина «Cake НЕ может подключиться к базе данных». показана, потому что скрипт, который проверяет, может ли он подключиться к базе данных ( /lib/Cake/View/Pages/home.ctp ), использует только default подключение к базе данных для этого теста. И поскольку такого соединения нет, он завершается с ошибкой.

Комментарии:

1. Ага. Я могу подтвердить, что это так. Несмотря на то, что страница индекса по умолчанию сообщила, что CakePHP не удалось подключиться к моей базе данных, другие контроллеры смогли получить доступ и вернуть данные нормально. Спасибо.