Symfony1.4.11学习笔记(四):数据模型
2011-05-22 00:00
351 查看
在前面几篇中已经设置了环境、创建了项目、也设置好了虚拟主机,接下来就要进行核心部分的编程了。就编程来说最经典的就是MVC了,而一个好的框架更是可以把MVC的思想发挥得淋漓尽致,Symfony就是这样的好框架!在Symfony看来,MVC框架如下图所示:
这种模式将代码分离为3个层 :
模型层(Model )定义业务逻辑(数据库属于这个层)。 symfony将与模型层关联的所有类和文件都放在
视图层(View )是与用户交互的层(模板引擎是这个层的一部分)。在symfony中,视图层主要由PHP模板组成。这些文件存储在不同的
控制层(Controller )是一段代码,它从模型层读取数据传送给视图层,由视图层显示到客户端。先前我们看到来自用户的所有请求都由前端控制器(
这一篇主要是学习Symfony如何进行“M”的,:)!
1、进行关系数据库的设计
由于本人比较喜欢使用工具进行设计,如MySQL WorkBench。本来的想法是从工具设计数据库,然后创建数据库,再使用
2、就是选择ORM工具
在Symfony中支持两种基于PHP的ORM工具:Doctrains和Propel,我选择了Doctrains,原因很简单,Symfony 默认使用它!(其实我选择它是因为Symfony 在1.2时还默认使用Propel,而1.4却默认使用Doctraine,而在Symfony2中也默认使用Doctraine,所以为了以后升级顺利选择了Doctraine)。
3、配置数据库参数
这个很简单,可以直接在config/databases.yml中直接配置,也可以使用命令:
[/code]
或者直接在NetBeans上找到
4、编写Doctrains的Schema文件(YAML格式)
在
5、从Schema中构建模型文件
[/code]
这个命令从config/doctrine/*.yml中读取Schema,然后将构建的模型文件被放置在lib/model/doctraine中。
注意:该命令不会影响lib/model/doctraine中的自定义类,只是替换lib/model/doctraine/base目录中的文件(这种处理方式真是优雅啊!)
6、生成SQL文件
[/code]
从模型文件中生成SQL语句,该命令会从config/databases.yml文件中获得数据库的类型,然后生成经过优化的SQL语句。
7、生成数据表
[/code]
该命令连接数据库,并根据lib/model/doctrine/*.class.php文件生成数据表。
8、录入初始数据
首先生成初始数据,在
然后运行下列命令
[/code]
这样就可以在数据库的表中插入初始数据
OK!打完收功!!
这种模式将代码分离为3个层 :
模型层(Model )定义业务逻辑(数据库属于这个层)。 symfony将与模型层关联的所有类和文件都放在
lib/model目录下。
视图层(View )是与用户交互的层(模板引擎是这个层的一部分)。在symfony中,视图层主要由PHP模板组成。这些文件存储在不同的
templates/目录中,当然这并不是一个很好地做法,因为PHP太灵活了,这会使很多人不知不觉得将业务逻辑写到这一层中。好在Symfony也意识到了这一点,在Symfony2中已经将Twig做为模板使用了。
控制层(Controller )是一段代码,它从模型层读取数据传送给视图层,由视图层显示到客户端。先前我们看到来自用户的所有请求都由前端控制器(
index.php和
f
rontend_dev.php)管理。这些前端控制器(front controllers)将实际工作交由动作(actions )处理,这些动作将被合理地组织到模块 (modules)中。
这一篇主要是学习Symfony如何进行“M”的,:)!
1、进行关系数据库的设计
由于本人比较喜欢使用工具进行设计,如MySQL WorkBench。本来的想法是从工具设计数据库,然后创建数据库,再使用
php symfony doctrine:build-schema命令自动生成Schema文件,从而省略以下2-4步,但很遗憾,使用命令自动生成的Schema文件和数据库不一致,需要再做修改,而无法直接使用。还有个方法是使用johmue的Schema导出脚本,将MySQL WorkBench生成的mwb文件转成doctrains的schame文件,不过由于看上去有点复杂,所以没有去尝试,有兴趣的兄弟不妨一试。
2、就是选择ORM工具
在Symfony中支持两种基于PHP的ORM工具:Doctrains和Propel,我选择了Doctrains,原因很简单,Symfony 默认使用它!(其实我选择它是因为Symfony 在1.2时还默认使用Propel,而1.4却默认使用Doctraine,而在Symfony2中也默认使用Doctraine,所以为了以后升级顺利选择了Doctraine)。
3、配置数据库参数
这个很简单,可以直接在config/databases.yml中直接配置,也可以使用命令:
php symfony configure:database "mysql:host=localhost;dbname=jobeet" jobeet jobeet
[/code]
或者直接在NetBeans上找到
configure:database命令,然后在参数中输入
"mysql:host=localhost;dbname=jobeet" jobeet jobeet,点击运行,也可以达到同样的效果。(看到这里,大家对如何NetBeans中运行symfony命令
应该比较清楚了,所以
下面就偷个懒,直接写命令了
)
4、编写Doctrains的Schema文件(YAML格式)
在
config/doctrine/schema.yml中直接编写YAML格式的文件
5、从Schema中构建模型文件
php symfony doctrine:build --model (使用
php symfony doctrine:build-model也行,这两个命令应该是等价的)
[/code]
这个命令从config/doctrine/*.yml中读取Schema,然后将构建的模型文件被放置在lib/model/doctraine中。
注意:该命令不会影响lib/model/doctraine中的自定义类,只是替换lib/model/doctraine/base目录中的文件(这种处理方式真是优雅啊!)
6、生成SQL文件
php symfony doctrine:build --sql (也可使用等价命令
php symfony doctrine:build-sql)
[/code]
从模型文件中生成SQL语句,该命令会从config/databases.yml文件中获得数据库的类型,然后生成经过优化的SQL语句。
7、生成数据表
php symfony doctrine:insert-sql
[/code]
该命令连接数据库,并根据lib/model/doctrine/*.class.php文件生成数据表。
8、录入初始数据
首先生成初始数据,在
data/fixtures/*.yml中直接编写与数据表同名的YAML格式文件。
然后运行下列命令
php symfony doctrine:data-load
[/code]
这样就可以在数据库的表中插入初始数据
了。
OK!打完收功!!
相关文章推荐
- Entity Framework 学习笔记(二)之数据模型 Model 使用过程
- Javascript MVC 学习笔记(一) 模型和数据
- Symfony1.4.11学习笔记(三):设置虚拟机
- 【数据结构与算法学习笔记】PART1:算法分析(计算,计算模型,大O记号,算法分析,迭代与递归,动态控制)
- 学习笔记TF049:TensorFlow 模型存储加载、队列线程、加载数据、自定义操作
- SpringMVC:学习笔记(4)——处理模型数据
- MVC学习笔记一:创建实体数据模型
- Sharepoint学习笔记—架构系列-- Sharepoint的数据模型(DataModel)、数据管理(Data Management)与查询(Query System)
- 流畅的Python学习笔记之第一章 Python数据模型
- 大数据算法学习笔记(四):数据流模型
- SpringMVC 学习笔记(四) 处理模型数据
- 数据挖掘学习笔记 多维数据模型-数据立方体
- Symfony1.4.11学习笔记(一):设置环境
- JavaWeb学习笔记-mybatis-17-数据模型分析
- 有关DataForm组件的研究_显示多重数据模型集合——Silverlight学习笔记[24]
- Entity Framework 学习笔记(一)之数据模型 数据库
- Tensorflow学习笔记:模型训练数据的保存和恢复的简单实例
- cassandra学习笔记2--Cassandra数据模型
- ExtJS4学习笔记九--数据模型的使用
- 深度学习Caffe实战笔记(21)Windows平台 Faster-RCNN 训练好的模型测试数据