没有合适的资源?快使用搜索试试~ 我知道了~
06_第五章:迭代2:项目(project)的CRUD.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 160 浏览量
2023-04-03
21:41:31
上传
评论
收藏 816KB DOCX 举报
温馨提示
试读
30页
。
资源推荐
资源详情
资源评论
第五章:迭代 2:项目(project)的 CRUD
现在,我们已经制定了一个基本的应用程序并配置连接了数据库,现在我们的工作是开发一些实用的功能。
我们知道项目(project)是这个应用程序最根本的组成部份之一。 用户首先会在 TrackStar 应用程序创建
或选择一个已经存在的项目(project)并在其中添加任务和问题。 出于这个原因,我们想在第二个迭代中
集中精力在项目(project)这个模块上。
迭代计划
这个迭代相当明了,在这个迭代结束时,我们的应用程序将允许用户创建新的项目(project),在项目
(project)列表中选择现有的项目(project),更新/编辑现有项目,并删除现有的项目。
为了实现这个目标,我们需要确定具体更细小的任务,下面列出了这次迭代需要完成的所有任务:
.
.
.
.
建立必要的表和所有其他的数据库对象
创建 Yii 的 AR 模型类,允许应用程序能够轻松地与数据库表交互。
创建 Yii 的控制器类,其实中包括的功能:
o
o
o
o
取得现有项目(project)列表并可以显示
更新现有项目(project)的相关数据
删除现有项目(project)
.
创建 Yii 的视图文件,显示的方式和逻辑是:
o
o
o
o
显示创建新项目(project)的表单,并允许创建
显示所有现在项目(project)的列表
显示编辑现有项目(project)的表单,并允许编辑
在项目列表中添加一个删除按钮,并允许删除项目(project)
这些已经足够了,让我们开始吧。我们将很快就把这些任务放到 TrackStar 中并管理。现在,我想我们只
能先将它们记在记事本上
在我们进入正式开发之前,我们应该选执行现有的测试套件并确保所有测试全部通过。现在我们只有一个
测试,这个测试是在第 4 章中添加的用来验证数据库连接是否有效。所以,不会花太多的时间运行我们的
测试套件。打开你的命令提示符,进入/protected/tests 目录,并运行以下单元测试:
SHELL 代码或屏幕回显:
PHPUnit 3.3.17 by Sebastian Bergmann.
Time:
OK (1 test, 1 assertion)
早在第 3 章,我们谈论关于一个项目(project)的基本数据,并在第 4 章,我们决定使用 MySQL 关系数
据库构建这个应用程序的持久层。现在我们将这个项目(project)的内容变成一个真正的数据库表。
我们知道,项目(project)需要有一个名字和描述。我们也将继续保持一些基本信息,跟踪每个记录的创建
基于这些所需的属性,如何创建项目(project)表,如下所示:
SQL 代码:
CREATE TABLE tbl_project
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(128),
description TEXT,
create_time DATETIME,
create_user_id INTEGER,
update_time DATETIME,
update_user_id INTEGER
);
如何使用第三方数据库管理工具,已经超出了本书范围。我们也希望让你跟着使用其他可能使用到的一些
其他软件。基于这些原因,我们将简单地提供低级别的数据定义语言(DLL)。创建数据库结构。所以,启
动 Yii 支持的数据库服务器,并在 trackstar_dev 数据库中,打开你的数据库编辑器,执行上面的 DLL
根据你选择使用的数据库,有许有可用的工具帮助你管理和维护数据库结构,我们建议你使用这些工具,
(http://dev.mysql.com/downloads/workbench/5.1.html) 进行设计,文档和管理我们的数据库结
构。我们也使用 phpMyAdmin (http://www.phpmyadmin.net/home_page/downloads.php) 帮
命名规则
你可能已经注意到,我们定义的数据库表名,以及所有的列名都是小写。在我们的开发中,我们将所有表
名和列名都使用小写字母。这主要是因为不同的 DBMS 是区分大小写的。举个例子,PostgreSQL 的列名
在默认情况下是区分大小写的,但我们在一个查询条件中必须引用一列,如果该列包含大小写字母。使用
小写字母将有助于消除这个问题。
你可能还注意到,我们为项目(project)表名使用了一个 tbl_前缀。从 1.1.0 版本起,Yii 提供了使用表前
缀的支持。表前缀是一个字符串,它是预先决定表的名称。它通常用在共享主机的环境下,多个应用程序
共享同一个数据库的情况,使用不同的表前缀加以区分。例如,一个应用程序使用前缀 tbl_ 而另一个可
以使用 yii_。另外,一些数据库管理员把它当成一个命令规则,用来前缀标识数据库对象是什么类型,或
使用前缀来进行分组。
在 Yii 中为了采用表前缀支持,必须设置 CDbConnection::tablePrefix 属性为期望的表前缀。然后在整
个应用程序的 SQL 语句中,可以使用{{TableName}}做为参考表名,其中 TableName 就是表的名称,
但不用前缀。例如,如果我们需要修改这个配置,我们仍然可以使用如下代码查询所有项目(project):
PHP 代码:
$projects=Yii::app()->db->createCommand($sql)->queryAll();
但这个问题有点超前了。现在让我们离开我们的配置。重新回到正题。稍后再进入数据库查询。
现在,我们已经创建了 tbl_project,我们需要创建 Yii 模型类来管理该表中的数据。早在第 1 章,我们介
绍了 Yii 的对象关系映射(ORM)层和 Active Record(AR)。现在我们根据应用程序的上下文来看一个具体
的例子。
以前,我们使用 yiic shell 命令来帮助我们自动生成一些代码。如在第 2 章,我们正是使用 shell 命令来
创建我们的第一个控制器,还有许多其他的 shell 命令可以执行,以帮助自动创建应用程序代码。然而,
从 1.1.2 版本起,Yii 有一个新的和更复杂的界面工具 Gii。Gii 是一个高度可定制和可扩展的基础于 Web
的代码生成平台,把 yiic shell 命令提升到了新的高度。我们将使用这个新平台,创建我们的新模型类。
在我们开始使用 Gii 之前,我们必须在应用程序中配置。此时,你可能猜到我们将要编辑我们的主应用程
序配置文件 protected/config/main.php。是的,要配置 Gii,打开这个文件,并添加如下的高亮代码:
PHP 代码:
'application.models.*',
'password'=>'[add_your_password_here]',
),
这为应用程序配置了 Gii 模块。我们本书后面章节详细讲解 Yii 模块。这里的重点是要确保这些代码添加到
了配置文件,并提供你的密码。现在,访问此工具地址:http://localhost/trackstar/index.php?r=gii。
下面的屏幕快照显示了验证表单:
你可能还记得,这些菜单的选项都类似于第 2 章使用 yiic shell 命令行工具的帮助信息。因为我们想要创
建 tbl_project 表的模型,这个模型生成器选项似乎是一个正确的选择。点击链接将带我们进入以下页面:
在创建过程中,表前缀字段域主要用于帮助 Gii 确定如何命名 AR 类。如果您使用一个前缀,你可以在此
添加。这样,不会使用该前缀来命名新的类。就我们而言,我们使用的是 tbl_前缀,这也恰好是表单的默
认值。因此,指定此值将意味着我们新生成的 AR 类将被命名为 Project,而不是 tbl_project。
接下来的两个字段域是要求输入表名和我们希望生成的类名。我们表的名称是 tbl_project,查看模型类
的名称会自动填空。它使用表名,但没有前缀,并以大写字母开头来覆盖模型类的名称。因此,Project
为我们模型类的名称,但你也可以自己定义此名称。
剩余29页未读,继续阅读
资源评论
คิดถึง643
- 粉丝: 3909
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功