Yii使用PDO(PHP Date Object)連接各種各樣的資料庫,因此,幾乎所有主流的資料庫,Yii都可以 很好地提供支援。這也是一個成熟框架所應具有的廣泛適用性。
在對資料庫進行任何操作之前,都必須先與資料庫伺服器建立連線。在Yii應用程式中,有一個專門的核心 元件(component)用於處理資料庫連接,我們很容易可以在設定檔中找到他:
'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2advanced', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ], // ... ...],// ... ...
Yii用 yii\db\Connection 來表示資料庫連接。這個Connection實作了 對於PDO的一個簡單封裝,並掩蓋了各種資料庫的區別,實作了一個統一的開發介面。
這樣,使得你在 程式設計過程中,可以忽略絕大多數的資料庫相容問題,可以更專注於功能開發。例如,你不用再擔心在 MySQL下不能使用Money類型的欄位等等。
在 yii\db\Connection 中,有一個 $schemaMap 數組,用於建立PDO資料庫驅動與特定的schema 類別間的映射關係:
public $schemaMap = [ 'pgsql' => 'yii\db\pgsql\Schema', // PostgreSQL 'mysqli' => 'yii\db\mysql\Schema', // MySQL 'mysql' => 'yii\db\mysql\Schema', // MySQL 'sqlite' => 'yii\db\sqlite\Schema', // sqlite 3 'sqlite2' => 'yii\db\sqlite\Schema', // sqlite 2 'sqlsrv' => 'yii\db\mssql\Schema', // newer MSSQL driver on MS Windows hosts 'oci' => 'yii\db\oci\Schema', // Oracle driver 'mssql' => 'yii\db\mssql\Schema', // older MSSQL driver on MS Windows hosts 'dblib' => 'yii\db\mssql\Schema', // dblib drivers on GNU/Linux (and maybe other OSes) hosts 'cubrid' => 'yii\db\cubrid\Schema', // CUBRID];
我們可以認為Yii預設情況下支援上述數組中的10種DBMS(6個Schema),這在絕大多數情況下, 是完全足夠的。萬一你使用了超出這一範圍的DBMS,在確保相容的情況下,你可以自己寫一個Schema, 使Yii可以支援該DBMS。
推薦學習:yii框架
以上是yii如何連接資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!