#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 не удалось подключиться к моей базе данных, другие контроллеры смогли получить доступ и вернуть данные нормально. Спасибо.