Thinkphp6 whereRaw fieldRaw case when else 用法

74 篇文章 0 订阅

public function video_list_order(){
        try{
            //处理搜索条件
            $map = [];
            //分类:0文章;1视频;2直播
            $map[] = ['art_type','=',"1"];
            //是否删除:0否;1是
            $map[] = ['is_delete','=',"0"];
            //标题搜索
            $title = Request::param('title','');
            if($title != ''){
                $map[] = ['title','like',"%{$title}%"];
            }
            //分类搜索
            $class_id = Request::param('class_id','');
            if($class_id != ''){
                $map[] = ['class_id','=',"$class_id"];
            }
            //审核状态(0:待提交;1:待审核;2:审核通过;3:审核拒绝)
            $status = Request::param('status','');
            if($status !== ''){
                $map[] = ['status','=',"$status"];
            }
            //是否启用:0禁用;1启用
            $is_enabled = Request::param('is_enabled','');
            if($is_enabled !== ''){
                $map[] = ['is_enabled','=',"$is_enabled"];
            }
            //发布者
            $nick_name = Request::param('nick_name','');
            if($nick_name != ''){
                $map[] = ['nick_name','like',"%$nick_name%"];
            }

            //视频标签
            $article_label_name = Request::param('article_label_name','');
            if($article_label_name != ''){
                $map[] = ['article_label_name','like',"%$article_label_name%"];
            }

            $list = Db::table('rui_article')->where($map)
                ->fieldRaw("(CASE
                    WHEN all_num=0 THEN TRUNCATE(0,0)
                    ELSE TRUNCATE(wan_num/all_num*100,0) END) as CompletionRate,id,title,art_type,cover_type,cover_images,label_id,
                label_name,article_label_id,article_label_name,status,uid,nick_name,avatar,status,class_id,class_name,
                zan_num,virtual_views_num,view_num,collect_num,comment_num,share_num,
                is_rec,is_top,is_enabled,is_delete,create_time,update_time,video_url,video_other_url,
                wan_num as FinishBroadcasting,wei_num as UnfinishedBroadcasting,all_num as Broadcasting")
                ->order('CompletionRate','desc')
                ->order('id','desc')
                ->page(Request::param('page'))->limit(Request::param('limit'))
                ->select()->toArray();
            foreach ($list as $k=>$v){
                $list[$k]['is_rec_bool'] = $v['is_rec'] == 1 ? true :false;
                $list[$k]['is_top_bool'] = $v['is_top'] == 1 ? true :false;
                $list[$k]['is_enabled_bool'] = $v['is_enabled'] == 1 ? true :false;
                $list[$k]['is_delete_bool'] = $v['is_delete'] == 1 ? true :false;
                if(!$v['video_url']){
                    $list[$k]['video_url'] = $v['video_other_url'];
                }
                $list[$k]['CompletionRate'] = "{$v['CompletionRate']}%";
            }
            $arr['list'] = $list;
            $arr['count'] = Db::table('rui_article')
                ->where($map)->count();
        }catch (ValidateException $e) {
            // 验证失败 输出错误信息
            throw new ParameterException(['msg'=>$e->getError()]);
        }
        return $arr;
    }

$chanpinmaidian_arr = ArticleModel::whereRaw("art_type=1 and status=2 and is_enabled=1 and is_delete=0 and ($chanpinmaidian_map)")
                    ->field('id,title,nick_name,art_type,video_url,video_other_url,zan_num,comment_num,share_num,is_coin_fuli')
                    ->order('id','desc')
                    ->page($page_rand)->limit(1)
                    ->select()->toArray();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅坞茶坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值