Ми створили каркас додатка і закінчили зі структурою БД. У даному розділі ми створимо саму базу і налаштуємо підключення до неї.
Для створення бази даних ми використовуємо 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_',
),
),
…
);