修改一个百度小程序时遇到个难解决的问题,最后发现可以用多种方法解决,一是使用ThinkPHP的each方法解决,另一种是使用mysql的left函数,还有一种是使用分解再组合的方式解决。
最近小程序查得严,我一个图片展示不美观,被要求整改。原来是文字太多,图片没显示完的原因,只有截取字符串,可以在小程序中用js截取,也可以在程序中截图,下面分别有程序接口处理的方法。
1、ThinkPHP的each方法解决
Db::name('schools')->alias('a')->field('a.id,left(a.school_name,12) as school_name,city.city_name') ->where($where)->order('a.id','desc')->paginate(10)->paginate($pagenumber,false,['query'=>request()->param()])->each(function($item, $key){
$item["school_name"] = mb_substr($value['school_name'],1,10,'utf-8');
return $item;
});
2、使用mysql的left函数
Db::name('schools')->alias('a')->field('a.id,left(a.school_name,12) as school_name,city.city_name') ->where($where)->order('a.id','desc')->paginate(10)
3、拆分后再组合
$list = Db::name('schools')->alias('a')->field('a.id,left(a.school_name,12) as school_name,city.city_name') ->where($where)->order('a.id','desc')->paginate(10);
$data = $list->all();
foreach ($data as $k =>$v){
$item["school_name"] = mb_substr($value['school_name'],1,10,'utf-8');
$list[$k] = $v;
}
$this->assign('list', $list);
其实还有一种方法可以通过thinkphp的读写器,但必须在Model中完成。