Налаштування бази даних ======================= Ми створили каркас додатка і закінчили зі структурою БД. У даному розділі ми створимо саму базу і налаштуємо підключення до неї. Створення бази даних -------------------- Для створення бази даних ми використовуємо 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/uk/basics.application#application-configuration), що знаходиться у PHP-файлі `/wwwroot/blog/protected/config/main.php`. Код даного файлу повертає асоціативний масив, що містить пари імʼя-значення, кожна з яких використовується для ініціалізації доступних для запису властивостей [екземпляра додатка](/doc/guide/uk/basics.application). Налаштуємо компонент додатка `db` наступним чином: ~~~ [php] return array( … 'components'=>array( … 'db'=>array( 'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db', 'tablePrefix'=>'tbl_', ), ), … ); ~~~ Конфігурація вище говорить, що [компонент додатка](/doc/guide/uk/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/uk/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_', > ), > ), > … > ); > ~~~