Установка базы данных ===================== Мы создали каркас приложения и закончили со структурой БД. В данном разделе мы создадим саму базу и настроим подключение к ней. Создание базы данных -------------------- Для создания базы данных мы используем SQLite. Поскольку поддержка баз данных в Yii основана на [PDO](http://www.php.net/manual/en/book.pdo.php), мы можем легко переключаться между различными СУБД (например, MySQL, PostgreSQL) без необходимости изменять наш код. Создаем файл базы данных `blog.db` в директории `/wwwroot/blog/protected/data`. И каталог и файл базы данных должны иметь возможность перезаписи процессом Web-сервера, как этого требует SQLite. Мы можем просто скопировать файл базы данных с демонстрационной версией блога из установленной копии Yii. Он расположен в директории `/wwwroot/yii/demos/blog/protected/data/blog.db`. Чтобы создать базу данных вручную, можно выполнить SQL-выражения из файла `/wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql`. > Tip|Подсказка: Чтобы выполнить SQL-выражения, необходимо использовать инструмент > командной строки `sqlite3`, который может быть найден на > [официальном Web-сайте SQLite](http://www.sqlite.org/download.html). Установка подключения к базе данных ----------------------------------- Чтобы использовать базу данных блога в нашем приложении, необходимо задать [конфигурацию приложения](/doc/guide/ru/basics.application#application-configuration), которая находится в PHP-файле `/wwwroot/blog/protected/config/main.php`. Код данного файла возвращает ассоциативный массив, содержащий пары имя-значение, каждая из которых используется для инициализации доступных для записи свойств [экземпляра приложения](/doc/guide/ru/basics.application). Настроим компонент приложения `db` следующим образом: ~~~ [php] return array( … 'components'=>array( … 'db'=>array( 'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db', 'tablePrefix'=>'tbl_', ), ), … ); ~~~ Конфигурация выше говорит, что [компонент приложения](/doc/guide/ru/basics.application#application-component) `db` является экземпляром класса [CDbConnection] со свойством `connectionString`, начальное значение которого `sqlite:/wwwroot/blog/protected/data/blog.db` и свойством `tablePrefix` со значением `tbl_`. Теперь мы можем использовать подключение к базе данных `Yii::app()->db` в любом месте нашего кода. Заметим, что выражение `Yii::app()` возвращает экземпляр приложения, который мы создаем во входном сценарии. За более подробным описанием методов и свойств подключения к БД, можно обратиться к [описанию его класса|CDbConnection]. Однако, в большинстве случаев, подключение к БД используется не непосредственно, а через [ActiveRecord](/doc/guide/ru/database.ar). Остановимся подробнее на свойстве `tablePrefix`, которое мы использовали при настройке. Данное свойство задаёт префикс `tbl_` для таблиц БД. То есть, если имя таблицы в SQL-выражении заключено в двойные фигурные скобки (например, `{{post}}`), то компонент `db`, перед тем, как отправить запрос СУБД, преобразует его в имя таблицы с префиксом (например, `tbl_post`). Данная возможность особенно полезна, если в будущем мы планируем изменить префикс таблиц без изменения кода. К примеру, если мы разрабатываем CMS, мы можем использовать данную возможность, чтобы при установке пользователь мог выбрать подходящий ему префикс. > Tip|Подсказка: Если вы хотите использовать для хранения данных вместо SQLite > СУБД MySQL, вы можете создать БД `blog`, используя SQL из файла > `/wwwroot/yii/demos/blog/protected/data/schema.mysql.sql`. После этого измените > настройки приложения следующим образом: > > ~~~ > [php] > return array( > … > 'components'=>array( > … > 'db'=>array( > 'connectionString' => 'mysql:host=localhost;dbname=blog', > 'emulatePrepare' => true, > 'username' => 'root', > 'password' => '', > 'charset' => 'utf8', > 'tablePrefix' => 'tbl_', > ), > ), > … > ); > ~~~