Как я могу изменить базу данных по умолчанию, используемую в Kohana 3? - PullRequest
2 голосов
/ 28 июня 2010

Я установил новую конфигурацию базы данных в application/config/database.php с именем staff.

Затем я создал новую базовую модель, добавил защищенную переменную $db и установил ее в конструкторе на $this->db = Database::instance('staff').

Когда я пытаюсь заменить Db::query(Database::SELECT, $query) на $this->db->query(Database::SELECT, $query), происходит сбой с ...

Отсутствует аргумент 3 для Kohana_Database_MySQL :: запрос ()

Третий аргумент, который мне не хватает, это $as_object, то есть не требуется при использовании статического метода query(). Я предполагаю, что статический метод передает это мне. На самом деле возвращает new Database_Query($type, $sql).

Я думаю, что я делаю это неправильно.

Есть ли способ перегрузить статический Db::query(), который я обычно использую в разных классах с альтернативной конфигурацией базы данных?

Спасибо

1 Ответ

5 голосов
/ 28 июня 2010

Затем я создал новую базовую модель, добавил защищенную переменную $ db и установил в конструкторе значение $ this-> db = Database :: instance ('staff').

Вы загрузили базу данных в свой контроллер.

Когда я пытаюсь заменить Db :: query (Database :: SELECT, $ query) на $ this-> db-> query(Database :: SELECT, $ query), происходит сбой с ...

Теперь вы создаете запрос.

Далее необходимо выполнить запрос с использованием базы данных, которую высоздали:

$result = $query->execute($this->db);

В Kohana v3 запросы и базы данных разделены, поэтому вы должны указать запросу, какую базу данных выполнять, а не указывать базе данных выполнить запрос.Запрос скомпилируется сам, а затем сам вызовет $db->query($sql).

Вы также можете быстро загрузить базу данных:

$query->execute('staff');

, которая будет выполняться в базе данных персонала.

...