PHPEye开源社区 » Zend Framework 使用讨论 » 关于Zend_Db_Table在项目中的作用
《Programming PHP》第二版上市
2008-3-26 11:45 wingZZseed
关于Zend_Db_Table在项目中的作用

我几乎看遍了所有的ZF教程 对Model的层的代码无外乎都是继承自Zend_Db_Table的类 并且任何方法都没写

我想请问实际开发中 不可能这样的吧?Zend_Db_Table有很多限制 它只是针对一个表的操作

我现在遇到一个问题 举个例子 文章和Tag的关系

我已知一个文章ID 要根据这个ID取出他的所有Tag

我现在有文章表Article、Tag表、还有一个对应关系表

一个文章可以有多个Tag 一个Tag也可以对应多个文章

对应关系表也包含一些数据 比如这篇文章被打上Tag的时间、打tag的用户名等等

那么 我想要取出ID为1的文章的所有Tag、同时还要有打上Tag的时间和用户 怎么办?

用Zend_Db_Table 的 Relationships 只能单个的取 不能一次取出来 这样就要读两次数据库 而且还要自己合并两个Zend_Db_Table_Rowset

不知道大家遇到这种情况是怎么解决的?

2008-3-26 16:09 Freebear
zend framework 1.5.0 现在支持外连接了。
如果不行,你也可以用存储过程。不一定非要用zend framework

2008-3-27 23:48 haohappy
我最近也在做一个和delicious类似的项目,涉及到tag。 我觉得有些地方还是要自己手写sql,否则效率较低。

2008-4-21 15:41 keenlio
手写吧,我做过这样的:
$setup =  $db -> fetchAll (' SELECT ffr.resrc, ffr.descr, ffr.privilege, ffr.url, ffr.image, ffrtype.name, menulist.listId, menulist.parent,menulist.lineSep, menulist.child
                    FROM ffr, ffrtype, ffrmodule, menulist
                    WHERE ffr.ffrTypeId = ffrtype.ffrTypeId
                    AND ffrtype.name = "Setup"
                    AND menulist.ffrId = ffr.ffrId
                    AND ffrmodule.ffrId = ffr.ffrId
                    AND ffrmodule.modId = "MOD1"
                    order by ffr.ffrId');

Model方便我们对table做单一的query, 若要三个以上对table做复杂的query还是得手写。

[[i] 本帖最后由 keenlio 于 2008-4-21 15:44 编辑 [/i]]

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.