Несмотря на то, что большая часть сайтов сегодня использует базу данных (иногда даже не одну), в некоторых случаях можно обойтись без нее. Сайт, на котором присутствует редко изменяемая информация (например, сайт-визитка) обычно организуют с помощью нескольких статичных страниц. Также в качестве источника для хранения информации можно использовать файлы. Именно поэтому в Кохане изначально отключена библиотека для работы с базой, но она конечно же включена в сборку в качестве официального модуля. Настройка работы этого модуля ничем не отличается от настройки других модулей, находящихся в папке modules. А как вы помните, для подключения модуля нужно просто раскомментировать строчку с его названием в файле bootstrap.php:
/** * Enable modules. Modules are referenced by a relative or absolute path. */ Kohana::modules(array( .... 'database' => MODPATH.'database', // Database access ... ));
Модуль ORM пока не трогайте. Отдельные уроки по нему будут обязательно, просто чуть позже. Вообще я считаю, что все нужно изучать постепенно. Да, это считается крутым и модным, но тут как в случае с ООП. Когда видишь как новичек на каждый чих создает класс, становится грустно. Так и ORM нужно использовать осторожно. Напихают вызовы в цикл и не знают, что на каждый вызов создается «select» (каким злом являются селекты в цикле объяснять не нужно).
Идем дальше. Чтобы использовать базу данных, ее нужно конечно создать. Как это сделать, я рассказывать не буду, потому что если вы этого не знаете, то вам рано браться за изучение фреймворка.
Следующее, что нужно сделать — отредактировать конфигурационный файл, где необходимо прописать настройки доступа к свежесозданной базе. Но поскольку в папке modules править ничего нельзя, для этого у нас есть «наша» папка application, то конфигурационный файл нужно туда скопировать. Продублируйте файл database.php из «modules/database/config/» в «application/config/» и откройте его. На данный момент нас интересует только соединение default, т.е. вот эта часть кода:
'default' => array ( 'type' => 'mysql', 'connection' => array( /** * The following options are available for MySQL: * * string hostname server hostname, or socket * string database database name * string username database username * string password database password * boolean persistent use persistent connections? * array variables system variables as "key => value" pairs * * Ports and sockets may be appended to the hostname. */ 'hostname' => 'localhost', 'database' => 'kohana', 'username' => FALSE, 'password' => FALSE, 'persistent' => FALSE, ), 'table_prefix' => '', 'charset' => 'utf8', 'caching' => FALSE, 'profiling' => TRUE, ),
Ниже имеется еще одно соединение — alternate, которое также можно использовать. Вообще таких соединений можно создать сколько угодно, если вы используете несколько баз данных. Тогда, в отличие от дефолтной базы, нам прийдется указывать ее название в запросах.
Но вернемся к настройкам соединения default. Параметр type в первой строке массива — тип СУБД. В нашем случае это «mysql». Скорее всего у вас используется именно она, поэтому здесь ничего менять ненужно. Следом идет параметр connection, отвечающий за настройки соединения с БД. Здесь вам нужно внести: название хоста, название базы данных, имя пользователя, пароль пользователя, поддерживать ли постоянное соединение (булев тип, по умолчанию — FALSE, т.е. не поддерживать). Для локального сервера здесь обычно требуется только поменять имя пользователя на «root» и изменить название базы данных, если вы ее назвали не «kohana», а как-то иначе. Для нелокального сервера эти настройки вам должен предоставить хостер.
Далее идут дополнительные настройки базы данных. Вы можете установить префикс (если ваши таблицы будут использовать его), кодировку(не советую менять), а также включить или выключить кеширование запросов и профилирование (вывод статистики по затратам времени и памяти в табличной форме, где показано минимальное, максимальное и среднее значение).
Вот и все настройки. Теперь можно создавать Модель и работать с базой данных, чем мы и займемся в следующем уроке.
<< Назад | Вперед >> |
Пожалуйста, зарегистрируйтесь для комментирования.
Спасибо за урок.
Я делаю простенький сайт и планирую пользоваться SQLite.
Объясните пожалуйста как правильно сконфигурировать подключение.
Насколько мне известно, настройк аналогичны настройкам alternate, там где pdo, только в ‘dsn’ нужно указать путь к файлу sqlite и говорят, что кодировку надо выставить в NULL, т.к. там какие-то проблемы с UTF8 возникают. Попробуйте, если что отпишите здесь, крайне любопытно. Сам подумываю об использовнии SQLite когда-нибудь.
Добрый день ! У меня есть простенький вопрос по ORM, раздела такого не нашел, здесь спрашивать ?И будет ли ORM на этой сайте в ближайшее время ?
Уроков по орм пока нет. Они будут. Пока лучше спрашивать на форуме.
class Model_User extends ORM {
protected $_has_one = array(
‘passport’ => array(
‘model’ => ‘passport’,
‘foreign_key’ => ‘user_id’,
),
);
}
Для чего создавать пустую модель ‘model’ => ‘passport’ и вообще это прописовать, обьясните пожалуйста, интересно как это использовать и т.п.
Скажите, пожалуйста, если ли в кохане модуль для работы с pdo?
Главное чтоб он у вас был)а в кохане работа с ним есть…
А у меня такой вопрос. хочу переделать подключение к БД через патент Singleton, вот только думаю как это сделать. На php сделал а тут даж не знаю как сделать
Боитесь, что у вас может получится несколько соединений ? Каким образом ?
Подключение SQLITE
- config/database.php
return array
(
‘default’ => array(
‘type’ => ‘PDO’,
‘connection’ => array(
‘dsn’ => ‘sqlite:database/database.db’,
‘persistent’ => FALSE,
),
‘table_prefix’ => »,
‘charset’ => NULL,
‘caching’ => FALSE,
‘profiling’ => TRUE,
),
);
- Model
class Model_Blocks extends ORM {
protected $_table_name = «blocks»;
protected $_table_columns = array(
‘id’ => ‘INT(1) AUTO_INCREMENT PRIMARY KEY’,
‘text’ => ‘TEXT’,
);
protected $_primary_key = ‘id’;
protected $_db_group = «default»;
}