完成了程序骨架和数据库设计,在这一节里我们将创建博客的数据库并将其连接到程序骨架中。
我们选择创建一个SQLite数据库。由于Yii中的数据库支持是建立在 PDO 之上的,我们可以很容易地切换到一个不同的 DBMS (例如 MySQL, PostgreSQL) 而不需要修改我们的应用代码。
我们把数据库文件 blog.db
建立在 /wwwroot/blog/protected/data
中。注意,数据库文件和其所在的目录都必须对Web服务器进程可写,这是SQLite的要求。我们可以简单的从博客演示中复制这个数据库文件,它位于 /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
来访问数据库连接对象了。注意, Yii::app()
会返回我们在入口脚本中创建的应用实例。如果你对数据库连接的其他可用的方法和属性感兴趣,可以阅读 类参考。然而,在多数情况下,我们并不会直接使用这个数据库连接。而是使用被称为 ActiveRecord 的东西来访问数据库。
我们想对配置中的 tablePrefix
属性再解释一点。此属性告诉 db
连接它应该关注我们使用了 tbl_
作为数据库表前缀。具体来说,如果一条SQL语句中含有一个被双大括号括起来的标记 (例如 {{post}}
),那么 db
连接应该在把它提交给DBMS执行前,先将其翻译成带有表前缀的名字 (例如 tbl_post
) 。这个特性非常有用,如果将来我们需要修改表前缀,就不需要再动代码了。例如,如果我们正在开发一个通用内容管理系统 (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_', ), ), ...... );
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.