如何使用 Eloquent Laravel 嵌套两个查询

弗洛里安·S。

我确实有一张桌子,里面有多个访客。在我的结果列表中,只应显示每个访问者的最后一次访问。

该表看起来像:

id | created_at | descr | website | source
------------------------------------------
2  | 2017_12_22 | john | john1.com | a
3  | 2017_12_23 | marc | ssdff.com | b
4  | 2017_12_24 | john | john1.com | c
5  | 2017_12_24 | tina | def.com   | b
6  | 2017_12_25 | stef | abc.com   | a
7  | 2017_12_26 | john | john2.com | c

如果我做一个

->orderBy('visitors.created_at', 'desc')
->groupBy('visitors.descr')

结果列表是正确的,因为每个访问者只显示一次。但我需要访问者的最新出现,并且结果列表显示第一次出现。所以我想看到 ID 7 而不是 ID 2。

以下查询解决了该问题:

select *
from visitors as v 
INNER JOIN ( select descr , MAX(created_at) as max_created
from visitors as v
group by descr ) AS M 
where v.descr = M.descr AND v.created_at = M.max_created
ORDER BY created_at DESC

有人能帮我把它变成雄辩的或让我进入另一个方向吗?

保罗·斯皮格尔

如果您可以使用 AUTO_INCREMENTid列而不是created_at,则可以使用另一种方式来获得(相同)结果:

select *
from visitors
where id in (
    select MAX(id)
    from visitors
    group by descr
)
ORDER BY id DESC

此查询可能效率较低,但与 eloquent 一起使用更容易,因为它whereIn()支持子查询。

$subQuery = Visitor::groupBy('descr')->select(DB::raw('max(id)'));
$latestVisitors = Visitor::whereIn('id', $subQuery)->orderBy('id', 'desc')->get();

请注意descr,如果 increated_at中的相同,您的原始查询可以返回多行 per 使用id不会发生这种情况,因为它是独一无二的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 Laravel Eloquent 在两个表之间创建子查询

来自分类Dev

Laravel Eloquent如何查询avrege并在两个值之间进行比较

来自分类Dev

如何在laravel查询构建器或eloquent中使用两个表通过created_at列计算行数?

来自分类Dev

如何使用Laravel Eloquent创建子查询?

来自分类Dev

如何使用 Laravel eloquent 优化循环查询

来自分类Dev

如何使用Laravel在单个页面上对两个Eloquent集合进行分页?

来自分类Dev

如何在两个相关模型中使用 PHP Laravel Eloquent groupBy 和 sum 方法?

来自分类Dev

如何将两个 Laravel Eloquent 查询合并为一个(所以我访问了数据库一次而不是 2 次)

来自分类Dev

如何在Laravel Eloquent中编写嵌套的单个查询

来自分类Dev

Laravel Eloquent-嵌套关系具有两个层次以上的约束

来自分类Dev

Laravel:使用Eloquent属于,从两个表中获取数据吗?

来自分类Dev

Laravel 4:使用Eloquent连接两个表进行多个数据库连接

来自分类Dev

在laravel 5.3中使用Eloquent联接两个模型

来自分类Dev

Laravel Eloquent-如何获得嵌套关系

来自分类Dev

Laravel 5:如何使用Eloquent查询数据透视表

来自分类Dev

如何在 eloquent laravel 中使用别名编写 SQL 查询?

来自分类Dev

如何在 Laravel 5.8 中使用 Eloquent 进行查询?

来自分类Dev

Laravel> 使用 Eloquent 查询多对多关系

来自分类Dev

使用 Laravel 的 Eloquent 进行查询构建

来自分类Dev

Laravel Eloquent 选择查询使用的付款方式

来自分类Dev

Laravel Eloquent - 使用关系构建“where not”查询

来自分类Dev

如何在laravel eloquent中查询三个表

来自分类Dev

使用 Eloquent 将两个查询合并为一个

来自分类Dev

Laravel - 如何将 MySQL 查询转换为 Laravel Eloquent

来自分类Dev

Laravel - 如何在 Laravel 中将原始查询转换为 Eloquent

来自分类Dev

Laravel Eloquent:获取包含两个特定关系的记录

来自分类Dev

两个模型的通用模型 ID - Laravel 5 - Eloquent

来自分类Dev

Laravel eloquent 合并两个结果并排序

来自分类Dev

使用两个 Laravel 模型查询并返回结果

Related 相关文章

  1. 1

    如何使用 Laravel Eloquent 在两个表之间创建子查询

  2. 2

    Laravel Eloquent如何查询avrege并在两个值之间进行比较

  3. 3

    如何在laravel查询构建器或eloquent中使用两个表通过created_at列计算行数?

  4. 4

    如何使用Laravel Eloquent创建子查询?

  5. 5

    如何使用 Laravel eloquent 优化循环查询

  6. 6

    如何使用Laravel在单个页面上对两个Eloquent集合进行分页?

  7. 7

    如何在两个相关模型中使用 PHP Laravel Eloquent groupBy 和 sum 方法?

  8. 8

    如何将两个 Laravel Eloquent 查询合并为一个(所以我访问了数据库一次而不是 2 次)

  9. 9

    如何在Laravel Eloquent中编写嵌套的单个查询

  10. 10

    Laravel Eloquent-嵌套关系具有两个层次以上的约束

  11. 11

    Laravel:使用Eloquent属于,从两个表中获取数据吗?

  12. 12

    Laravel 4:使用Eloquent连接两个表进行多个数据库连接

  13. 13

    在laravel 5.3中使用Eloquent联接两个模型

  14. 14

    Laravel Eloquent-如何获得嵌套关系

  15. 15

    Laravel 5:如何使用Eloquent查询数据透视表

  16. 16

    如何在 eloquent laravel 中使用别名编写 SQL 查询?

  17. 17

    如何在 Laravel 5.8 中使用 Eloquent 进行查询?

  18. 18

    Laravel> 使用 Eloquent 查询多对多关系

  19. 19

    使用 Laravel 的 Eloquent 进行查询构建

  20. 20

    Laravel Eloquent 选择查询使用的付款方式

  21. 21

    Laravel Eloquent - 使用关系构建“where not”查询

  22. 22

    如何在laravel eloquent中查询三个表

  23. 23

    使用 Eloquent 将两个查询合并为一个

  24. 24

    Laravel - 如何将 MySQL 查询转换为 Laravel Eloquent

  25. 25

    Laravel - 如何在 Laravel 中将原始查询转换为 Eloquent

  26. 26

    Laravel Eloquent:获取包含两个特定关系的记录

  27. 27

    两个模型的通用模型 ID - Laravel 5 - Eloquent

  28. 28

    Laravel eloquent 合并两个结果并排序

  29. 29

    使用两个 Laravel 模型查询并返回结果

热门标签

归档