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]] );