2014-09-02 23:04:44 7673次浏览 3条回答 0 悬赏 0 金钱

是这样,我对一个查询设置了select,只显示2个字段,事实上这张表里有10个字段,因为我不需要查询别的字段也不需要显示,所以我设置select的时候就设置了两个。

查询完成,没有问题,没有报错,但是我将数据打印出来看,发现一个问题,设置了select的2个字段正常显示,但是其余8个不需要显示的字段也同样显示出来了,只是显示的为null而已,我觉得这可能并不是我想要的效果。

举个实际的例子,一个APP请求我们使用YII制作的服务端,我们将数据反馈给他,以json的形式,但是APP收到后发现,某些字段为null,这个时候它就无法分辨,这个null代表的是人为赋值为null还是这个值不在查询范围内造成的为null。

所以有这个疑惑,原因也大致能猜到,因为数据用ORM映射到模型的,所以只要表里有这个字段,那么模型会自动进行映射,找不到的数据列肯定就设置为null了,然后查询结束我们得到一个实例,导致里面有一些字段为null。

我不知道我分析的对不对,但是很明显这个问题让我有些苦恼的。希望看明白的人能够给我回复,谢谢。

补充于 2014-09-03 14:45

嗯,谢谢,我后来看了下API,发现用DAO方法查出来的是纯数组,没这个问题。

  • 回答于 2014-09-03 13:13 举报

    我看明白了,你说的很对。

  • 回答于 2014-09-03 14:31 举报

    有道理,用CDbCommand吧,模型就是模型,它里面本来就定义了那么多的属性,不能因为那个属性没赋值就直接去掉那个属性,这样不科学

  • 回答于 2014-09-08 09:16 举报

    恩 你直接在SELECT中限制查询出来的字段 是这样子的

您需要登录后才可以回答。登录 | 立即注册
lxepoo
总监

lxepoo 江苏南京

注册时间:2014-09-02
最后登录:2020-10-23
在线时长:33小时42分
  • 粉丝27
  • 金钱1487
  • 威望125
  • 积分3067

热门问题