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 上编辑它 !