field('id,value,name') ->where('status',YesNoEnum::YES) ->order(['sort'=>'desc']) ->select() ->toArray(); $msgTypeArr = array_column($dictData,'value'); $msgStatisTicsObj = MasterWorkerMessage::field('msg_type,count(*) as count') ->where('show_type',YesNoEnum::NO) ->whereIn('msg_type',$msgTypeArr) ->where('worker_id',$userId) ->group('msg_type') ->select(); foreach($dictData as $k => $v){ $val = $msgStatisTicsObj->where('msg_type',$v['value'])->first(); $v['total'] = $val->count?? 0; $dictData[$k] = $v; } return $dictData; } public static function showMsg($params,$userId) { return MasterWorkerMessage::whereIn('id',$params['ids']) ->where('worker_id',$userId) ->update(['show_type'=>YesNoEnum::YES]); } }