使用tp5.1的一些小小注意事项
编辑时间:2019-03-11 作者:金满斗 浏览量:1891 来源:原创

1:tp5.1的模型中,如无外接关联最好转数组

这几天一直两边跑,代码一般都是git同步。

上次在这笔记本上就发现写一个软件时,商品分类不出来,出错,而在店铺那边有很好,一样的代码,当时以为是环境的问题,没管它。今天再次出现,发现是模型里的查询数据没转化为数组,到递归那边就不正常了。

上面的代码有点问题,因为是要调试,就把缓存前的取反逻辑取消了。

下面是调用的平级分类代码,也放上来。


/*递归无限极分类,获取平级数组。level表示层数 */
private static function levelsort($data,$pid=0,$level=0){
$arr = [];
foreach ($data as $v) {
if($v['pid']===$pid){
$v['level']= $level;
$arr[]=$v;
$arr =array_merge($arr,self::levelsort($data,$v['id'],$level+1));
}
}
return $arr;
}

2:Cache::remember 函数一定要保证能100%的返回值

手册里的


不存在则写入缓存数据后返回

Cache::remember('name',function(){ return time(); });
我经常喜欢这么用,返回的时候判断下,有就返回,没有就返回个空,这是错误的写法,你就是返回了空缓存那边还是会缓存个空文本的,对于要判断的,还是


先get,再有就set好,不能偷懒.


对应layui表里需要的js对象的传递.这里直接上代码吧.

后台的


$model = SalesModel::find($id);
$list = $model->salesDetails->toArray(); //取出关联详单
$list = json_encode($list );
$this->assign(compact('model','list'));

前台js 这边的.



var lstdata = {$list|raw};

table.render({
elem: '#saleseditTable',
data:lstdata,
cellMinWidth: 100,


后面的省略,懂的一看就懂了.

做api接口有时候要调试一些变量,但是条件不许不能直接输出,如模型里的一些东西.

这时候我们就可以直接写出文本来.

如,直接写到本地文件.


$old_data = self::where('purchase_id','=',$keyid)->select()->toArray();
$file = '../1.txt';
file_put_contents($file,var_export($old_data,true)."\r\n",FILE_APPEND);


这里写出变量到1.txt

当然如果要写了缓存用可以这样写 

file_put_contents($file,serialize($old_data));


带搜索参数的分页,官方手册一句话就结束了,例子在这

$article ->where('title|content','like',"%$con%")->where('status','=',2)->
        order('sort , id desc')->paginate($pageNum,false,$config=['query'=>["keywords"=>$con]] );

来说两句吧