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   andydaopeng  阅读(7)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2016-02-29 mysql loop if

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示