Symfony1.4.11学习笔记(四):数据模型

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
+关注继续查看

在前面几篇中已经设置了环境、创建了项目、也设置好了虚拟主机,接下来就要进行核心部分的编程了。就编程来说最经典的就是MVC了,而一个好的框架更是可以把MVC的思想发挥得淋漓尽致,Symfony就是这样的好框架!在Symfony看来,MVC框架如下图所示:

 

 

这种模式将代码分离为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

或者直接在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也行,这两个命令应该是等价的)

这个命令从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)

从模型文件中生成SQL语句,该命令会从config/databases.yml文件中获得数据库的类型,然后生成经过优化的SQL语句。

7、生成数据表

php symfony doctrine:insert-sql

该命令连接数据库,并根据lib/model/doctrine/*.class.php文件生成数据表。

8、录入初始数据

首先生成初始数据,在data/fixtures/*.yml中直接编写与数据表同名的YAML格式文件。

然后运行下列命令

php symfony doctrine:data-load

这样就可以在数据库的表中插入初始数据了。                                                                                                                                                                                                                                                  本文转自 firehare 51CTO博客,原文链接:http://blog.51cto.com/firehare/585369,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
XML 中间件 数据格式
Django 高级指南:深入理解和使用类视图和中间件
Django 是一款强大的 Python Web 框架,它提供了一套完整的解决方案,让我们能够用 Python 语言快速开发和部署复杂的 Web 应用。在本文中,我们将会深入研究 Django 中的两个高级特性:类视图(Class-Based Views)和中间件(Middleware)。
|
6月前
|
前端开发 开发者 UED
前端封装库/工具库的UI框架之Semantic UI
随着前端技术的不断发展,前端开发也越来越受到了重视。而在前端开发过程中,UI框架是不可或缺的一部分。Semantic UI 是一个流行的、现代化的 UI 框架,它为前端开发者提供了一套丰富、易用的组件库和样式表。
156 0
|
6月前
|
前端开发 容器
前端封装库/工具库的UI框架之Foundation
在现代前端开发中,UI 框架是一个非常重要的组成部分。其中,Foundation 是一个备受欢迎的响应式前端框架。
173 0
|
9月前
|
前端开发 JavaScript 数据处理
Yii2.0框架的MVC架构是如何设计的?它的流程是什么样的?
Yii2.0框架的MVC架构是如何设计的?它的流程是什么样的?
|
设计模式 前端开发 数据库
Laravel Eloquent 关联模型 进阶使用技巧
Laravel Eloquent 关联模型 进阶使用技巧
|
存储 前端开发 JavaScript
Go 语言 Web 开发很简单:使用模板将视图与逻辑分离
我们的 Web 服务器由两部分构成: 为在用户浏览器中运行的 HTML 和 JavaScript 前端代码提供服务; 接受 Web socket 连接以允许客户端进行通信。
Go 语言 Web 开发很简单:使用模板将视图与逻辑分离
|
前端开发 数据库连接 PHP
symfony框架MVC模式中的Model使用方法
symfony框架MVC模式中的Model使用方法
symfony框架MVC模式中的Model使用方法
|
Python JavaScript 前端开发
带你读《Python Django Web典型模块 开发实战》之三:用Django设计大型电商的类别表
本书内容涵盖了收费API业务模型的开发、网站防爬虫策略、网站违禁词自查系统的搭建、会员系统的搭建、前后端分离项目的上线部署等大大小小十余个项目模块分析,可以基本解决Django学习者从理论到实践过渡过程中经常会遇到的大部分问题。
|
前端开发 JavaScript UED
推荐文章
更多