Laravel 多 where 并搜索
$size= (int)$request->size;
$page= (int)$request->page;
if(empty($page)) $page =1;
if(empty($size)) $size =10;
$ofsset = $size * ($page -1);
// var_dump($name);
$threatlistmodel = new ThreatList();
$total = $threatlistmodel->where(function($query) use ($data){
$data['name'] && $query->where("name","like","%".$data['name']."%");
isset($data['level']) && $query->where("level",$data['level']);
isset($data['is_tb']) && $query->where("is_tb",$data['is_tb']);
$data['end_at'] && $query->where("find_at","<=",$data['end_at'].' 23:59:59');
$data['start_at'] && $query->where("find_at","=>",$data['start_at'].' 00:00:01');
$query->where("is_state",1);
})->count();
//var_dump($total);
$list = $threatlistmodel->where(function($query) use ($data){
$data['name'] && $query->where("name","like","%".$data['name']."%");
isset($data['level']) && $query->where("level",$data['level']);
isset($data['is_tb']) && $query->where("is_tb",$data['is_tb']);
$data['end_at'] && $query->where("find_at","<=",$data['end_at'].' 23:59:59');
$data['start_at'] && $query->where("find_at",">=",$data['start_at'].' 00:00:01');
$query->where("is_state",1);
})->orderBy("id","desc")->offset($ofsset)->limit($size)->get()->each(function($item){
$con_info = json_decode(unserialize($item->count_con),true);
$item['ip_count'] = $con_info["total"];
unset($item->count_con);
});
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 5年前 自动加精
关于 LearnKu
高认可度评论:
抛砖引玉啦
分页的优化
看到这串代码 我的强迫症一下就出来了 取值要用arrget或者dataget 不然有可能报未找到的下标 闭包的变量我会命名类名 数字之间的计算我会尽量用bc函数 并不是为了计算金钱 调用where 我会调用Model:query() 不然ide会报模型找不到where这样的方法 这该死的强迫症
可以了解一下when方法,会优雅很多。
@deeka 谢谢您的意见,但是有些使用场景不一样!
个人实在不建议这样简写,还有 英文逗号后面留个空格,连接符 . 前后空格,一些php编码规则看一下, 整个代码都看的舒服一些
@Vckin 不客气。不过从你上面的代码看when完全可以接管
就你贴出来的代码来说 when 完全能满足你的需求,让代码更简洁美观易读
看到这串代码 我的强迫症一下就出来了 取值要用arrget或者dataget 不然有可能报未找到的下标 闭包的变量我会命名类名 数字之间的计算我会尽量用bc函数 并不是为了计算金钱 调用where 我会调用Model:query() 不然ide会报模型找不到where这样的方法 这该死的强迫症
@罪人 @helone 受教受教 我在好好研究一下!
再说参数好像不必是 int 吧
这样去写,等到以后需要增加或者删减业务的时候不觉得麻烦么?为什么不在一个地方统一处理然后根据参数控制呢?
如果有10种情况,那岂不是要写10遍?有一天业务改了要改10遍
emmmmm
你这么写 你们老大不抽你么 代码可读性和维护性太差了啊 写个闭包 list count 的条件只写一次就行了
我宁愿 用if 判断 你这种 让别人过来怎么维护你的代码。
抛砖引玉啦
分页的优化
@PhoenixIcy 优雅 :+1:
@PhoenixIcy 666
@PhoenixIcy
extract($validated);学习了了解下这个包 https://github.com/Tucker-Eric/EloquentFil...
$request->page ?? 1
@PhoenixIcy ,之前看了篇文章说是不要用
%.xxx%,以%或者_开头进行模糊查询会导致索引失效,我之前也是%.xxx.%,后来改成xxx.%,但是我也没怎么仔细去研究,说错了不要打我。@Mr_White_DT 可根据业务需求改变 我的业务需求没想到什么好方法 可以不 %xxx%
@PhoenixIcy 适合自己最好了
@Mr_White_DT
%xxx%不走索引%dadada也不走索引这样的代码看着很累 如果能保证前后的字段一致可以自己写一个扩展实现.
@DamonTo 我可能离这一步还有差距 :joy:
@史沟飞 这个包有点意思,好用
挺好的 节约键盘if按键的寿命