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 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10

写的不错,不过你的开始时间和结束时间都少了1秒

2年前 评论

这个代码

$size= (int)$request->size;
if(empty($size)) $size =10;

可以改成

$size  = $request->input('size', 10);
2年前 评论

eloquentfilter可以了解一下,有可能会帮助到你

2年前 评论

这。。 这帖子我记得1年前好像有人发过一模一样的呢

2年前 评论

楼主比我还新 :joy:

2年前 评论
$total = $threatlistmodel->when( $data['name'],function($query) use ($data){
    $query->where("name","like","%".$data['name']."%");
})
->when( isset($data['level']) ,function($query) use ($data){
    $query->where("level",$data['level']);
}) 
->when(isset($data['end_at']) && isset($data['start_at']), function($query) use ($data){
    $query->whereBetween('find_at',[$data['end_at'],$data['start_at']]) 
}) 
->where("is_state",1)
->count();
2年前 评论

@caomaoboy 代码质量低,进步空间很大,好好努力

2年前 评论

GraphQL :relieved:

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!