0 follower

Налаштування бази даних

Ми створили каркас додатка і закінчили зі структурою БД. У даному розділі ми створимо саму базу і налаштуємо підключення до неї.

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_',
        ),
    ),
  …
);

Found a typo or you think this page needs improvement?
Edit it on github !