QeePHP 开源社区 - 引领 PHP 开发新思想、新模式's Archiver

WindWood 发表于 2008-8-27 17:12

getWhere只能生成一个关联表字段查询

FleaPHP的condition处理还有一个严重的bug,就是在getWhere的时候,数组里只能有一条关联表的字段值判断,多余的会丢失掉,不过Left Join倒是还会在。(这是我说其bug的原因,如果设计是指允许一个,Left Join就不会出现多个关联表)

原因在于生成$whereby字串的时候,在循环的最开始就用 =号 对$whereby进行初始化,导致上一次循环生成的$whereby就冲掉了。

还有in() 有一个很严重的问题是,field 不能进行关联查询的。 也就是说只能是当前表的字段进行in()操作,而关联表里的字段是不行的。这个也带来很多麻烦。
这个相关的代码是在parseCondition这个函数里的。


当然condition 不能支持()进行严格的OR操作,还是一个很大的遗憾。

[[i] 本帖最后由 WindWood 于 2008-8-27 17:22 编辑 [/i]]

dualface 发表于 2008-8-27 19:22

是的。目前只支持一个关联查询的条件。

这部分我们在想办法改进,但PHP4又有不少限制,实现起来挺困难。

WindWood 发表于 2008-8-28 10:14

我看代码上的问题就在于$whereby在每次循环前面都被= 初始化了。

能不能改成.=的运算,当然要做许多的判断,避免出现WHERE AND的问题。

我觉得这个只是代码结构的问题,应该是可以解决的。

dualface 发表于 2008-8-28 12:53

嗯,正在修正

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.