yii框架入门学习笔记二 根据数据表创建model类

    这一次我是按着教程做一个yii的blog,首先就是建立相关的数据结构,在yii的demo文件夹里有包含了blog的sql文件,我用sqldesigner制作了表结构原形,这也是个神器了,能够简洁高效的设计数据库原型,更重要的是,免费。。。navicat的data moder是个更强大的模型设计工具,不过,让我去买正版那只能,呵呵。。。

   

说实话,照着教程做的,我现在还有些字段还不明白是干嘛用的,比如user表的aslt等等。。。照着继续吧,做到下面就知道干嘛的了。

在数据库中建立完成后,接下来对应用的配置文件进行修改配置文件是yiiblog\protected\config\main.php。在50行定义了db应用组件,下面后一段注释掉了的mysql的链接配置项,我们将未注释的db注释掉,然后打开mysql链接代码并填写相关信息即可完成mysql链接配置项。

 

然后打开yii提供的脚手架gii,打开方式在配置文件的21行,将模块配置里的gii部分去掉注释即可。在红色框里填写一个密码,即使用gii的密码。

 

 

接下来在浏览器中访问gii模块即可,访问路径:http://localhost/yiiblog/index.php?r=gii,输入红色框中定义的密码即可进入gii模块。脚手架页面的首页显示脚手架提供如下功能:

 

 

创建控制器,创建CURD操作,创建表单,创建模型,创建模块。yii提供了两种模型:表单模型和active record。我的理解就是:表单模型是用来对表单数据进行验证等操作的。active record即活动记录正统解释是AR是ORM对象关系映射的一种实现,通俗的讲就是一个AR类对应了一张表,一个AR类的对象对应表中的一条记录,AR类中的每个成员属性对应了表中的一列。active record框架往往用来驱动MVC中的model层,这样我简单的理解为:我们使用active record来实现对数据库的各类操作。所以,对数据表的增删改查的前提是,存在一个对应的active record。由于数据库是我软肋,数据源的各种设计模式我十分难以明白,目前只能做这个浅显的理解。 首先点击model generator,会出现一个界面来选择需要映射的数据表。由于没有定义表前缀,所以需要敲出全部表名。不过gii提供了自动不全功能,会自动提示表名,也是很方便的。

由于配置文件中没有定义标签最,可以手动输入标前缀,或者直接写入配置文件。选择一张表,就tbl_user后,点击preview预览。

 

预览显示了即将创建的文件的位置和文件名(yii将所有php源码放置在根目录的protected下并添加了apache下的访问限制来保护源码,所以生成的文件根目录是相对protected而言的)。点击generate生成模型文件。

 

 

照此操作建立另外四张表的active record。到model目录下可以看到,新生成了五个文件,加上之前系统生成的两张表单模型,一共七个文件。

 

 

接下来为文章和评论创建相应的curd操作。gii提供了快速的curd建立方法,点击Crud Generator

 

 

我们需要根据active record来建立curd操作,所以在图中model class写入刚创建的模型。注意此处model名是区分大小写的,所以需要选择Post,因为先前生成的模型是根据驼峰命名法,类文件首字母大写。选择Post后下面controller会自动填写,然后点击预览即可。

 

 

gii会为应用程序建立如图中列出的文件,一个控制器和相关实现curd操作的视图文件。同理建立Comment相关的curd操作文件。建立完成后即可进行访问。访问的地址为:
http://localhost/yiiblog/index.php?r=post   或   http://localhost/yiiblog/index.php?r=post/index
其中r的第一个参数代表了控制器ID,即控制器文件去掉Controller后首字母小写的那个单词。r的第二个参数表示当前控制器下相对应的动作名。不填写是会使用配置文件中定义的默认动作。(同理,控制器为空则控制器为默认控制器)。

 

 

右侧定义了增加和管理文章的快捷键。点击创建文章会跳转到登陆页面。此处采用的还是自动生成的时候的设置,没有添加自定义的用户的操作。所以输入默提供的账号demo/demo或者admin/admin即可。其中demo不具备管理权限。

 

填写各项数据后会验证表单元素

 

如提示中的,作者一栏在数据库中定义为了int型,所以此处需要填写int。

 

 

同理创建commit的curd操作。

 

目前为止文章和评论还是完全独立的两部分,接下来需要通过程序来建立两者的虚拟关联。

 

 


 

posted @ 2013-04-26 16:31  albafica  阅读(1478)  评论(0编辑  收藏  举报