基于windows平台上的Doctrine与zend Framework的整合

本文详细介绍如何在Zend Framework中整合Doctrine ORM,包括目录结构、配置文件、模型生成及数据库操作等内容。

引用:http://ruben.savanne.be/articles/integrating-zend-framework-and-doctrine

最近做个外包项目,主要是封装了zendframework并采用doctrine作为orm解决方案,项目没有成形的结构文档,没有需求,而且工期紧,沟通困难,只能一步一步从头整理,自行搭建产品架构,自己的linux服务器跑起来声音太大,决定在windows上搞套试用。

下载地址:

Doctrine下载地址

Doctrine Api地址

我采用的是svn下载方式:

安装svn到D:/subversion  在本地建立D:/doctrine目录,下载版本到本地的D:/doctrine

D:/subversion/bin>svn co http://svn.doctrine-project.org/branches/1.2 D:/doctrine

Zendframework最新下载地址

我下载的是1.9

 

ZendFramework有自己的Zend_Db抽象类,Zend_Db类十分接近底层数据库,写sql的时候也需要写个个类似select 之类的语句,而doctrine更接近于面向对象。因此采用doctrine替代了ZendFramework的zend_Db类.


整合前需要先建立目录.目录结构如下:(|- 代表一级)

application
|-config
|-controllers
|-doctrine
|-|-data
|-|-|-fixtures
|-|-|-sql
|-|-migrations
|-|-schema
|-library
|-|-Doctrine
|-|-ZendFramework
|-models
|-|-generated
|-public
|-scripts
|-views
|-|-scripts
|-|-|-index

 

 

之前有做过zend framewok 项目的将比较熟悉此结构,下列的路径与zf开发略有不同

application/doctrine/:此目录包含所有doctrine生成的数据文件,像sql语句,yaml模板,迁移数据等.

application/models/:Doctrine会自动生成model文件到此目录.在zd中十分易用.

library/:zf的library与Doctrine的library

scripts/:命令行引用存储在此处

关于library的结构,如下图所示:

 

 

library
|-Doctrine
|-|-Doctrine.php
|-|-Doctrine
|-ZendFramework
|-|-library
|-|-Zend

Apache虚拟路径配置:文件尾加入以下代码(我本地装application布署在D:/apache/htdocs/application)

 

 

入口文件:

Zend Framework中我们必须定义一入口文件.在此处也同样.先建立index.php与.htaccess文件.

public/index.php

  

public/.htaccess

  

真正的入口文件存储在global.php中,之所以这样设计,是因为bootstrap.php可用于处理客户端请求,而global.php页中还存在用于Doctrine命令行的脚本

脚本生成文件

scripts/doctrine-cli

 

定义数据库模型,关于yaml相关的知识,可去官方网站http://yaml.org/spec/1.2/spec.html上查看

application/doctrine/schema/schema.yml

控制器文件

application/controllers/IndexController.php

  

视图文件

application/views/scripts/index/index.phtml

  

执行Doctrine命令行:

Linux中(注意文件的权限问题,防止无法生成文件)

windows平台下:

进入php.exe所在路径,我的php放在c:/php下

脚本命令执行页在D:/apache/htdocs/application/scripts/下,文件名为doctrine-cli

运行

C:/php>php D:/apache/htdocs/application/scripts/doctrine-cli

 


 

测试通过即可执行

C:/php>php D:/apache/htdocs/application/scripts/doctrine-cli generate-models-yaml

执行成功后,可以在

D:/apache/htdocs/application/models下看到Message.php

D:/apache/htdocs/application/models/generated下看到BaseMessage.php

以上的文件为Doctrine命令行自动生成的model文件

下面的命令行可根据yml生成建库脚本

C:/php>php D:/apache/htdocs/application/scripts/doctrine-cli generate-sql

执行成功可在D:/apache/htdocs/application/doctrine/data/sql文件夹下看到schema.sql文件

C:/php>php D:/apache/htdocs/application/scripts/doctrine-cli create-tables

执行成功将在当前连接的数据库中创建名为message的数据表

更多的指令请参考Doctrine Api

 

完成上述内容后可看到界面(csdn不支持贴图):

 


此时可进一步加入数据处理内容:

修改数据application/controllers/IndexController.php

修改视图文件application/views/scripts/index/index.phtml

效果:


 

使用Pgsql在windows中需要注意的事项

执行doctrine-cli create-tables 不成功

1.修改php.ini文件时,需要修改run (windows系统目录)php.ini下的参数与php自身文件路径下的php.ini 将

extension=php_pdo_pgsql.dll的注释去掉(两个文件都要去掉)

2.同时,将

PostgreSQL/bin下的dll复制php文件夹中或是设置为环境变量,本文的程序运行时提示

 

没有找到 LIBPQ.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。

没有找到 libintl-8.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。

没有找到 libiconv-2.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。

采用复制文件方式进行的

将PostgreSQL/bin文件夹 下的

gssapi32.dll

k5sprt32.dll

comerr32.dll

libiconv-2.dll

libintl-8.dll

libpq.dll

krb5_32.dll

文件复制到c:/php下


 

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值