ThinkPHP中field 方法与getField 方法的区别。

做项目的时候遇到了一个问题,框架生成的sql与放到navicat中执行。和页面显示出来的结果不太一样。

排查了很久,也没有找到问题。

出现问题的sql如下。

$fuck = M(null, null, 'DB_CONFIG1')->table("$tableName as p")
                        ->join('left join 表一 as c on p.PL_CID = c.ID')
                        ->join('left join 表二 as cl on p.PL_CLID = cl.CLID')
                        ->where($where)
                        ->having($having)
                        ->getField($getSelectFields);

这段代码是我写的,出现了问题,同事找到问题之后,大为生气,直接将结果集名字改成了fuck。这也是我写过的最恶心的代码之一。

后来经过同事的提醒,发现了问题。filed("字段1,字段2");最后的结果集是这样子的。

array(1) {
  [0] => array(2) {
    ["字段1"] => 值1,
    ["字段2"] => 值2
  }
}

而getField的结果集是这样子的。

值1  =>  值2

还是平时手册没有理解好。

老子最近一直在学mysql的函数式编程。等老子这些学会了,再也不用受这些问题的困扰了。

取数据的逻辑,处理数据的逻辑,以及分配数据的逻辑全部分开。最大限度的降低代码的复杂度。

使得网站的安全性更加可靠。

 

posted @ 2015-09-30 11:05  roverliang  阅读(521)  评论(0编辑  收藏  举报