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

Я только что установил 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',
    );
}

person Martin Bean    schedule 03.11.2011    source источник
comment
Можете ли вы показать свою базу данных.php?   -  person José Lorenzo Rodríguez    schedule 03.11.2011
comment
Конечно. Я отредактировал вопрос, чтобы показать содержимое файла.   -  person Martin Bean    schedule 03.11.2011


Ответы (2)


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

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

person dhofstet    schedule 03.11.2011
comment
Ага. Я могу подтвердить, что это так. Несмотря на то, что индексная страница по умолчанию сообщила, что CakePHP не может подключиться к моей базе данных, другие контроллеры смогли получить доступ и вернуть данные нормально. Спасибо. - person Martin Bean; 03.11.2011

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

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

public function __construct()
{
    if (DEV_SERVER) {
        $this->default = $this->development;
    } else {
        $this->default = $this->production;
    }
}
person burriko    schedule 03.11.2011
comment
Я видел эту информацию, может быть, это то, что я ищу. Это работает для какого cakephp # ? А также вы используете это в database.php? - person zeflex; 28.10.2014
comment
@zeflex Работает в версиях 1 и 2. Да, это входит в класс DATABASE_CONFIG в файле Config/database.php. - person burriko; 01.11.2014