ThinkPHP+MySQL查询数据的时候计算两个经纬度之间的距离并根据距离进行筛选

原需求实现说明

新增了一个按距离进行筛选的需求。需要把查询代码做如下修改

    /*** 求职意向* @return void* @throws \think\exception\DbException*/public function get_lists(){$request = $this->request->get();if(empty($request['lng']) || empty($request['lat'])){$this->error('位置信息错误');}$where = [];//筛选城市if(!empty($request['city'])){$where['p.city'] = array('eq',$request['city']);}//筛选姓名或者岗位名if(!empty($request['keywords'])){$where['r.name|c.name'] = array('like','%'.$request['keywords'].'%');}//筛选工种if(!empty($request['gongzhong'])){$where['p.gongzhong'] = array('eq',$request['gongzhong']);}//筛选性别if(isset($request['sex']) && in_array($request['sex'],[0,1])){$where['r.sex'] = array('eq',$request['sex']);}//筛选距离$sql = '';if(!empty($request['distance'])){$sql = "ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((".$request['lat']." * PI() / 180 - p.lat * PI() / 180) / 2), 2) +COS(".$request['lat']." * PI() / 180) * COS(p.lat * PI() / 180) * POW(SIN((".$request['lng']." * PI() / 180 - p.lng * PI() / 180) / 2), 2))) * 1000) < ".$request['distance'];}//最高学历筛选if(!empty($request['zuigaoxueli'])){$where['r.zuigaoxueli'] = array('eq',$request['zuigaoxueli']);}$lists = PurposeModel::alias('p')->join('user u','p.user_id = u.id')->join('resume r','p.user_id = r.user_id')->join('category c','p.category_id = c.id')//根据生日计算年领(YEAR(CURDATE()) - YEAR(birthday)) AS age 根据经纬度计算距离->field('p.user_id,r.name,u.avatar,(YEAR(CURDATE()) - YEAR(birthday)) AS age,r.sex,r.zuigaoxueli,c.name as category_name,p.gongzhong,p.work_begin,p.work_end,p.rest_begint,p.rest_end,p.city,p.address,'.getDistanceBuilder($request['lat'], $request['lng']))->where($where)->where($sql)->order('distance asc')->paginate();$this->success('获取成功',$lists);}

得到的SQL如下

SELECT p.user_id,r.name,u.avatar,(YEAR(CURDATE()) - YEAR(birthday)) AS age,r.sex,c.name AS category_name,p.gongzhong,p.work_begin,p.work_end,p.rest_begint,p.rest_end,p.city,p.address,ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((34.781089 * PI() / 180 - p.lat * PI() / 180) / 2), 2) +COS(34.781089 * PI() / 180) * COS(p.lat * PI() / 180) * POW(SIN((113.61261 * PI() / 180 - p.lng * PI() / 180) / 2), 2))) * 1000) AS distance
FROM `fa_purpose` `p`
INNER JOIN `fa_user` `u` ON `p`.`user_id` = `u`.`id`
INNER JOIN `fa_resume` `r` ON `p`.`user_id` = `r`.`user_id`
INNER JOIN `fa_category` `c` ON `p`.`category_id` = `c`.`id`
WHERE `p`.`city` = '郑州'  AND (`r`.`name` LIKE '%无人机%' OR `c`.`name` LIKE '%无人机%')AND `p`.`gongzhong` = '1'AND `r`.`sex` = '0'AND ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((34.781089 * PI() / 180 - p.lat * PI() / 180) / 2), 2) +COS(34.781089 * PI() / 180) * COS(p.lat * PI() / 180) * POW(SIN((113.61261 * PI() / 180 - p.lng * PI() / 180) / 2), 2))) * 1000) < 500
ORDER BY distance ASC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何抠图?6个简单方便的抠图软件教你自己快速抠图

如何抠图&#xff1f;6个简单方便的抠图软件教你自己快速抠图 抠图是图像处理中常见的操作之一&#xff0c;它可以帮助我们从一幅图像中抠出特定的部分&#xff0c;通常用于制作合成图、更换背景或修改图像内容。下面介绍的6款简单方便的抠图软件可以帮助您快速进行抠图操作&a…

PyQt:界面无边框+实现窗口最小化(任务栏图标隐藏+托盘图标显示)

一、整体实现效果 诸如WX、各种管家的桌面显示方式。窗口关闭后&#xff0c;往往是任务栏图标消失&#xff0c;保持右下角托盘图标显示&#xff0c;保持后台运行。双击托盘图标后&#xff0c;窗口显示。 二、代码实现 from PyQt5.QtWidgets import * from ato_upgrade impo…

失效模式分析的适用范围与注意事项——SunFMEA软件

失效模式分析对产品从设计完成之后&#xff0c;到首次样品的发展而后生产制造&#xff0c;到品管验收等阶段都可说皆有许多适用范围&#xff0c;基本上可以活用在3个阶段。 一、设计阶段的失效模式分析 1.针对已设计的构想作为基础&#xff0c;逐项检讨系统的构造、机能上的问…

CSS常用滤镜效果

CSS 提供了多种滤镜效果&#xff0c;可以通过 filter 属性应用于 HTML 元素。以下是一些常用的 CSS 滤镜效果&#xff1a; 一、灰度 (Grayscale) 将图像转换为灰度图像。值在 0%&#xff08;原始图像&#xff09;和 100%&#xff08;完全灰度&#xff09;之间。 filter: gra…

qt信号和槽之间传送其他数据类型

提交信号和接受槽文件里分别全局声明该结构 Q_DECLARE_METATYPE (can) 在提交信号的时候将该数据结构set到QVariant里 在槽的接收里 &#xff0c;直接.value强转为声明的自定义结构里 void MainWindow::canrecvdeal(QVariant sy)//CAN_FRAME_MAG v { CAN_FRAME_MAG v; vsy.valu…

android进阶-回调

回调&#xff08;Callback&#xff09;是一种常见的编程模式&#xff0c;用于处理异步事件或信息传递。通过回调&#xff0c;一个对象&#xff08;通常是一个事件的发起者或处理者&#xff09;可以将某些任务或行为的执行通知给另一个对象 常见例子&#xff1a; 事件监听器&a…

Next.js+TS项目中的错误边界处理与渲染降级实践

在开发基于Next.js的TypeScript应用程序时&#xff0c;我们经常会遇到一些意料之外的JavaScript错误&#xff0c;这些错误可能会导致页面直接白屏&#xff0c;严重影响用户体验。为了提升应用的健壮性和用户体验&#xff0c;引入ErrorBoundary组件是一种非常有效的策略。本文将…

【回溯 栈 代数系统 动态规划】282. 给表达式添加运算符

本文涉及知识点 回溯 栈 代数系统 动态规划 LeetCode 282. 给表达式添加运算符 给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target &#xff0c;在 num 的数字之间添加 二元 运算符&#xff08;不是一元&#xff09;、- 或 * &#xff0c;返回 所有 能够得到 ta…

Rust 中的声明可见性

Rust 中的声明可见性 在 Rust 编程语言中&#xff0c;声明可见性是一个核心概念&#xff0c;它决定了代码中的项&#xff08;如函数、结构体、枚举等&#xff09;在哪些范围内可以被访问。Rust 通过一套严谨的规则来控制这些可见性&#xff0c;以确保代码的安全性和封装性。下…

Ngnix VTS模块添加和测试

目录 VTS模块介绍 上传软件包xftp/lrzsz 执行脚本 添加vts的配置 测试 测试&#xff1a;nginx.conf配置文件是否有语法错误 测试&#xff1a;windows机器上访问效果 VTS模块介绍 Nginx VTS模块&#xff08;nginx Virtual Host Traffic Status Module&#xff09;是一个第三…

【C++初阶】string模拟实现

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

【精读Yamamoto】方向性连接如何丰富神经网络的功能复杂度 | 体外神经元培养实验 | 脉冲神经元模型(SNN) | 状态转移模型

探索大脑的微观世界&#xff1a;方向性连接如何丰富神经网络的功能复杂度 在神经科学领域&#xff0c;理解大脑如何通过其复杂的网络结构实现高级功能一直是一个核心议题。最近&#xff0c;一项由Nobuaki Monma和Hideaki Yamamoto博士领导的研究为我们提供了新的视角&#xff…

cuttag学习笔记

由于课题可能用上cut&tag这个技术&#xff0c;遂跟教程学习一波&#xff0c;记录一下以便后续的学习&#xff08;主要是怕忘了&#xff09; 教程网址cut&tag教程 背景知识&#xff1a;靶标下裂解与标记&#xff08;Cleavage Under Targets & Tagmentation&#xf…

什么是跨境物流管理系统,它有什么功能

对于从事跨境物流的物流商来说&#xff0c;提升物流效率是一直都需要考虑的问题。不过不用担心&#xff0c;跨境物流系统&#xff08;TMS&#xff09;是个不错的解决方案。 谁应该使用跨境物流管理系统&#xff1f; 可以说&#xff0c;跨境物流系统最大的特点就是使用上的灵活性…

90后医生下班摆摊就能赚1500?看内行人是如何分析的?2024普通人逆袭的机会,2024普通人想翻身的风口行业

“在自己空余的时间&#xff0c;做点自己喜欢的事情”这就是浙江义乌的王医生&#xff0c;摆摊被采访时的回答。王大夫说&#xff0c;自己兼职已经有半年多了&#xff0c;每天的营业额能达到1500元。同时王医生表示&#xff0c;自己的目标是开一间自己的小店。 看到这里&#x…

新版Idea配置仓库教程

这里模拟的是自己搭建的本地仓库环境&#xff0c;基于虚拟机搭建利用gogs创建的仓库 1、Git环境 你需要准备好git和仓库可以使用github 、gitee等 1.1 拉取代码 本项目使用 Git 进行版本控制&#xff0c;在 gogs 上创建一个个人使用的 git 仓库&#xff1a; http://192.168.…

1.5.2 基于XML配置方式使用Spring MVC

用户登录演示效果 实战概述&#xff0c;可以帮助你更好地理解整个流程。 项目创建 创建了一个名为 SpringMvcDemo01 的 Jakarta EE 项目。通过 Maven 添加了项目所需的依赖&#xff0c;包括 Spring MVC、JSTL 等。 视图层页面 创建了登录页面&#xff08;login.jsp&#xff0…

计算机毕业设计springboot体育馆场地预约管理系统【附源码】

计算机毕业设计springboot体育馆场地预约管理系统[附源码] &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制…

良心实用的电脑桌面便利贴,好用的便利贴便签小工具

在日常办公中&#xff0c;上班族经常需要记录临时任务、重要提醒或者突发的灵感。比如&#xff0c;在紧张的项目会议中&#xff0c;忽然想到一个改进的点子&#xff0c;或者是在处理邮件时&#xff0c;需要记下对某个客户的回复要点。在这些场景下&#xff0c;如果能直接在电脑…

基于SpringBoot+Vue的物流管理系统

运行截图 获取方式 Gitee仓库