laravel model
1 2 3 4 5 6 7 8 | $query = DB::table(self:: $_table ) ->when(! empty ( $params ), function ( $query ) use ( $params ){ foreach ( $params as $column => $val ){ $query ->where( $column , $val ); } }) ->where( 'del_status' , Constant::DATA_IS_NORMAL); return ( array ) $query ->first([ '*' ]); |
Union All :
$fields = ['uuid','title','end_time','end_time_range','city_sys_no','city_name','interested_cnt','created_at','updated_at']; $where = [ ['end_time','>=', date('Y-m-d')], ['del_status' , Constant::DATA_IS_NORMAL], [self::TABLE_FIELD_PUBLISH , Constant::IS_ENABLED], ]; $query1 = DB::table('activity_info')->select($fields)->where($where)->orderBy('end_time','asc')->limit(1000); $where = [ ['end_time','<', date('Y-m-d')], ['del_status' , Constant::DATA_IS_NORMAL], [self::TABLE_FIELD_PUBLISH , Constant::IS_ENABLED], ]; $query2 = DB::table('activity_info')->select($fields)->where($where)->orderBy('end_time','desc')->limit(1000); $mergedQuery = $query1->unionAll($query2); //$results = $mergedQuery->get(); //查询全部记录数据(不需要分页时的处理) //分页处理 $size = $param['limit'] ?? BaseModel::getPageSize(); $page = $mergedQuery->paginate($size, $fields,'page'); $total = $page->total(); //总记录数量 $results = $page->items(); //分页后的查询数据列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | //原生sql查询(附近地图) public function getListByOri( $param ){ $result = [ 'list' =>[], 'count' =>0]; $number = $param [ 'page' ]; $size = $param [ 'limit' ] ?? 1000; $lon = $param [ 'lon' ]; //经度 $lat = $param [ 'lat' ]; //纬度 $sql = <<<EOD SELECT %s FROM na_clinic_information EOD; $fields = "count(id) cnt" ; $query = sprintf( $sql , $fields ); $whereStr = " WHERE is_enabled=1 " ; //判断查询条件 if (! empty ( $param [ 'city_name' ])){ $city_name = $param [ 'city_name' ]; $whereStr = $whereStr . " AND city_name='{$city_name}'" ; } if (! empty ( $param [ 'province_name' ])){ $province_name = $param [ 'province_name' ]; $whereStr = $whereStr . " AND province_name='{$province_name}' " ; } $resultTotal = ( array )DB::selectOne( $query . $whereStr ); $earthRadius = 6371; if ( $resultTotal [ 'cnt' ]>0){ $fields = "id, clinic_name, address_detail,province_name,city_name,phone_number,lon,lat,clinic_type, ({ $earthRadius } * 2 * ASIN(SQRT( POWER(SIN(({ $lat } - ABS (lat)) * PI() / 180 / 2), 2) + COS ({ $lat } * PI() / 180) * COS ( ABS (lat) * PI() / 180) * POWER(SIN(({ $lon } - lon) * PI() / 180 / 2), 2) ))) AS distance"; $sql .= $whereStr ; $sql .= " ORDER BY distance " ; $start = ( $number -1)* $size ; $limitStr = " limit {$start},{$size}" ; $query = sprintf( $sql , $fields ). $limitStr ; $resultList = DB::select( $query ); $resultList = Common::objectToArray( $resultList ); $result [ 'list' ] = $resultList ; $result [ 'count' ] = $resultTotal [ 'cnt' ]; } return $result ; } |
posted on 2024-02-29 14:45 andydaopeng 阅读(7) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2016-02-29 mysql loop if