在创建了骨架应用程序并完成了数据库设计后,在本节中,我们将创建博客数据库并在骨架应用程序中建立与它的连接。
我们选择创建一个 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 nder IIS 上的 Sqlite DSN
如果您使用的是 Windows 和 IIS,则 sqlite 的连接字符串应如下所示
sqlite
如果您像我一样以前从未使用过 sqlite...
从 sql 导出加载 sqlite3 数据库的最快方法
从命令行创建 sqlite 数据库的最快方法如下所示
[sh] sqlite3 blog.db < schema.sqlite.sql
为了发表评论,请 注册 或 登录。