在建立骨架應用程式並完成資料庫設計後,在本節中,我們將建立部落格資料庫,並在骨架應用程式中建立與它的連線。
我們選擇建立 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 官方網站 找到。
為了在我們建立的骨架應用程式中使用部落格資料庫,我們需要修改它的應用程式設定,該設定儲存在 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 上編輯 !
windows IIS 上的 Sqlite DSN
如果您使用 windows 和 IIS,sqlite 的連線字串應該像這樣
sqlite
如果您跟我一樣以前從未使用過 sqlite...
從 sql dump 載入 sqlite3 資料庫的最快方法
從命令列建立 sqlite 資料庫的最快方法是這樣
[sh] sqlite3 blog.db < schema.sqlite.sql
註冊 或 登入 以發表評論。