今天在论坛看见一个这个问题,他有一个需求是关于在联表操作中,获取A表的所有数据和,关联B表,然后获取B表中某个字段等于A表的ID出现的次数。一开始看到这个需求我便想起之前不知道在哪里看见过field得一个用法,就是在过滤字段的时候进行一些统计操作,但是基于没用过,所以自己测试了一遍。
其实要实现这个需求并不是很难。
M('shop')->alias('a')->join('__SHOP_PERIOD__ b on a.id = b.sid')->filed('a.*,b.count(sid)')->select();
以上这句话就可以实现上面的那个需求啦,至于获取后的参数是怎么样,大家可以自己打印出来看看数组就知道了。另外我们在补充一下关于field连贯操作的一些写法。
一、field不但可以用于查询也可以用于数据更新==操作。
一般情况下,我们一般都是在查询数据的时候才会用到field()方法。实际上field方法还可以用在数据更新上。例如
//在创建create的时候过滤不必要的字段,下面代码为过滤field内之外的其他字段
M('user')->field('username,mobile,address')->create();
//在更新的时候进行过滤
M('user')->field('username,mobile,address')->save($data);
二、field不光只可以筛选出指定的字段,也可以指定不筛选某些字段
//指定不筛选password字段
M('user')->where(array('username'=>'vany'))->field('password',true)->find();
关于field的介绍就到这吧。本文存粹为了凑文章数,没办法,百度快照最近更新周期太长,最近只能多写点文章,让它多关照关照