Установка базы данных

Мы создали каркас приложения и закончили со структурой БД. В данном разделе мы создадим саму базу и настроим подключение к ней.

1. Создание базы данных

Для создания базы данных мы используем 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.

2. Установка подключения к базе данных

Чтобы использовать базу данных блога в нашем приложении, необходимо задать конфигурацию приложения, которая находится в 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_',
        ),
    ),
  …
);

Be the first person to leave a comment

Please to leave your comment.