php - 联合查询到 Laravel Eloquent 查询
问题描述
需要帮助将此查询转换为 laravel Eloquent 查询
select `pin`.*,`pin_reviews`.`review`,( 3959 * acos( cos( radians('27.788870') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('72.978920') ) + sin( radians('27.788870') ) * sin( radians( lat ) ) ) ) AS distance,COUNT(`pin_reviews`.`pin_id`) as `totalUserRating`,SUM(`pin_reviews`.`rating`) / (COUNT(`pin_reviews`.rating * 5)) as `rating`,`ads`.`product_name`,`ads`.`id` as 'adId',`ads`.`notes`,`ads`.`add_status`,`ads`.`description` as 'adsDescription',`c`.`name` as 'catName',`c`.`id` as 'catId',`sc`.`id` as 'subcatId', `sc`.`name` as 'subName',`ssc`.`id` as 'SubsubId',`ssc`.`name` as 'subsubName' from (
( SELECT
*
FROM
pin WHERE `subscription_plan` = 'Premium' LIMIT 2)
UNION
( SELECT
*
FROM
pin WHERE `subscription_plan` = 'Platinum' LIMIT 1)
UNION
(SELECT
*
FROM pin WHERE `subscription_plan` = 'Free' LIMIT 10)
)
AS pin
left join `pin_reviews` on `pin_reviews`.`pin_id` = `pin`.`id` left
join `ads` on `ads`.`pin_id` = `pin`.`id` left join `category` as `c`
on `c`.`id` = `ads`.`category_id` left join `category` as `sc` on
`sc`.`id` = `ads`.`sub_category_id` left join `category` as `ssc` on
`ssc`.`id` = `ads`.`sub_sub_category` where `pin`.`status` = 1 group
by
`pin`.`id` having `distance` < 380 order by `distance` asc limit 15
解决方案
Laravel eloquent 支持union()
您进行另一个查询,但在这种情况下,将所有查询放在一个DB::selectRaw()
推荐阅读
- c# - 带有 Chromedriver 的 Selenium SendKeys() 使用剪贴板内容而不是电子邮件地址中的“@”字符
- r - 我想在 R 管道工 APi 中添加一个过滤器,它可能会抛出一个无响应 url 的错误
- sql - Netezza:如何为该人找到 LATEST 连续期间的 MIN 和 MAX
- javascript - jQuery - 触发器(“点击”)在 e.preventDefault() 之后不起作用
- amazon-web-services - 基于内存预留的 AWS ECS 扩展
- mysql - 如何将外键约束导入 InnoDB 表
- c# - 表单 2 与 ListBox 值传递在 Form4 标签“帮助我”
- python - 由于 TypeError,无法在 iPad 的 Pythonista3 上安装 Pymongo
- xdebug - PHPUnit 给出没有代码覆盖驱动程序可用
- css - 使用对象位置移动图像一些像素