Мы создали каркас приложения и закончили со структурой БД. В данном разделе мы создадим саму базу и настроим подключение к ней.
Для создания базы данных мы используем SQLite. Поскольку поддержка баз данных в Yii основана на PDO, мы можем легко переключаться между различными СУБД (например, 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
.
Подсказка: Чтобы выполнить SQL-выражения, необходимо использовать инструмент командной строки
sqlite3
, который может быть найден на официальном Web-сайте SQLite.
Чтобы использовать базу данных блога в нашем приложении, необходимо задать
конфигурацию приложения,
которая находится в PHP-файле /wwwroot/blog/protected/config/main.php
.
Код данного файла возвращает ассоциативный массив, содержащий пары имя-значение,
каждая из которых используется для инициализации доступных для записи свойств
экземпляра приложения.
Настроим компонент приложения db
следующим образом:
return array(
…
'components'=>array(
…
'db'=>array(
'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db',
'tablePrefix'=>'tbl_',
),
),
…
);
Конфигурация выше говорит, что
компонент приложения
db
является экземпляром класса CDbConnection со свойством
connectionString
, начальное значение которого
sqlite:/wwwroot/blog/protected/data/blog.db
и свойством tablePrefix
со значением tbl_
.
Теперь мы можем использовать подключение к базе данных Yii::app()->db
в любом
месте нашего кода. Заметим, что выражение
Yii::app()
возвращает экземпляр приложения, который мы создаем во входном
сценарии. За более подробным описанием методов и свойств подключения к БД,
можно обратиться к описанию его класса. Однако, в
большинстве случаев, подключение к БД используется не непосредственно, а через
ActiveRecord.
Остановимся подробнее на свойстве tablePrefix
, которое мы использовали при
настройке. Данное свойство задаёт префикс tbl_
для таблиц БД. То есть,
если имя таблицы в SQL-выражении заключено в двойные фигурные скобки
(например, {{post}}
), то компонент db
, перед тем, как отправить запрос СУБД,
преобразует его в имя таблицы с префиксом (например, tbl_post
). Данная возможность
особенно полезна, если в будущем мы планируем изменить префикс таблиц без изменения
кода. К примеру, если мы разрабатываем CMS, мы можем использовать данную возможность,
чтобы при установке пользователь мог выбрать подходящий ему префикс.
Подсказка: Если вы хотите использовать для хранения данных вместо SQLite СУБД MySQL, вы можете создать БД
blog
, используя SQL из файла/wwwroot/yii/demos/blog/protected/data/schema.mysql.sql
. После этого измените настройки приложения следующим образом:return array( … 'components'=>array( … 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=blog', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'tablePrefix' => 'tbl_', ), ), … );
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.