在对数据库进行任何操作之前,都必须先与数据库服务器建立连接。在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如何连接数据库的详细内容。
