0 追蹤者

設定資料庫

在建立骨架應用程式並完成資料庫設計後,在本節中,我們將建立部落格資料庫,並在骨架應用程式中建立與它的連線。

1. 建立資料庫

我們選擇建立 SQLite 資料庫。由於 Yii 中的資料庫支援是建立在 PDO 之上,我們可以輕鬆切換到使用不同類型的 DBMS(例如 MySQL、PostgreSQL),而無需更改我們的應用程式程式碼。

我們在 /wwwroot/blog/protected/data 目錄下建立資料庫檔案 blog.db。請注意,目錄和資料庫檔案都必須可由 Web 伺服器程序寫入,這是 SQLite 的要求。我們可以簡單地從 Yii 安裝中的部落格示範複製資料庫檔案,該檔案位於 /wwwroot/yii/demos/blog/protected/data/blog.db。我們也可以透過執行檔案 /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql 中的 SQL 陳述式來產生資料庫。

提示: 若要執行 SQL 陳述式,我們可以利用 sqlite3 命令列工具,該工具可以在 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 應用程式元件,其 connectionString 屬性應初始化為 sqlite:/wwwroot/blog/protected/data/blog.db,而其 tablePrefix 屬性應為 tbl_

透過此配置,我們可以在程式碼中的任何位置使用 Yii::app()->db 存取 DB 連線物件。請注意,Yii::app() 傳回我們在入口腳本中建立的應用程式實例。如果您對 DB 連線可能具有的方法和屬性感興趣,您可以參考其 類別參考。然而,在大多數情況下,我們不會直接使用此 DB 連線。相反地,我們將使用所謂的 ActiveRecord 來存取資料庫。

我們想更詳細地解釋一下我們在配置中設定的 tablePrefix 屬性。這告訴 db 連線它應該尊重我們正在使用 tbl_ 作為資料庫表格名稱前綴的事實。特別是,如果在 SQL 陳述式中有一個用雙大括號括起來的符記(例如 {{post}}),則 db 連線應將其轉換為帶有表格前綴的名稱(例如 tbl_post),然後再將其發送到 DBMS 以執行。如果將來我們需要修改表格名稱前綴而不觸及我們的原始碼,此功能特別有用。例如,如果我們正在開發通用內容管理系統 (CMS),我們可以利用此功能,以便當它安裝在新環境中時,我們可以允許使用者選擇他們喜歡的表格前綴。

提示: 如果您想使用 MySQL 而不是 SQLite 來儲存資料,您可以使用 /wwwroot/yii/demos/blog/protected/data/schema.mysql.sql 中的 SQL 陳述式建立一個名為 blog 的 MySQL 資料庫。然後,將應用程式配置修改如下:

return array(
    ......
    'components'=>array(
        ......
        'db'=>array(
            'connectionString' => 'mysql:host=localhost;dbname=blog',
            'emulatePrepare' => true,
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
            'tablePrefix' => 'tbl_',
        ),
    ),
  ......
);

發現錯字或您認為此頁面需要改進嗎?
在 github 上編輯 !