当前位置: 首页 > 知识库问答 >
问题:

Laravel多重订单按天分组浏览量

逄烨
2023-03-14

我正在使用基于Laravel和Twig的OctoberCMS。

我正在尝试使用orderBy对数据库中的图像列表进行排序

我需要显示按日期分组的图像(desc),然后在该日期内按视图排序(desc)。

我在这里阅读是为了使用多个orderBy过程。

name     | created_at          | views
---------------------------------------
image 01 | 2017-03-27 07:08:31 | 3
image 02 | 2017-03-27 01:19:44 | 25
image 03 | 2017-03-25 01:43:06 | 9
image 04 | 2017-03-25 04:19:43 | 1
image 05 | 2017-03-25 15:19:43 | 12
image 06 | 2017-03-22 03:07:06 | 4
image 07 | 2017-03-22 08:10:07 | 16
image 08 | 2017-03-21 09:04:29 | 39
image 09 | 2017-03-20 07:38:31 | 5
image 10 | 2017-03-20 05:32:24 | 28

订货人

成功按Datecreated_at排序,但忽略按视图排序。可能是因为<码>时间。

$this->page["scopeGallery"] = Gallery::orderBy('created_at', 'desc')
                                      ->orderBy('views', 'desc')
                                      ->get();

群比

返回null。

$this->page["scopeGallery"] = Gallery::select(\DB::raw('DATE(created_at) as day'))
                                      ->groupBy('day')
                                      ->orderBy('views', 'desc')
                                      ->get();
{% for image in this.page.scopeGallery %}
    image.name
{% endfor %}
name     | created_at | views
------------------------------
image 02 | 2017-03-27 | 25
image 01 | 2017-03-27 | 3

image 05 | 2017-03-25 | 12
image 03 | 2017-03-25 | 9
image 04 | 2017-03-25 | 1

image 07 | 2017-03-22 | 16
image 06 | 2017-03-22 | 4

image 08 | 2017-03-21 | 39

image 10 | 2017-03-20 | 28
image 09 | 2017-03-20 | 5

共有2个答案

艾修筠
2023-03-14
匿名用户

我必须这样做,并在选择中包含我需要的任何其他列。

$this->page["scopeGallery"] = Gallery::select([
                                        'name',
                                        \DB::raw('DATE(created_at) as day')
                                      ])
                                      ->orderBy('day', 'desc')
                                      ->orderBy('views', 'desc')
                                      ->get();
}

严永丰
2023-03-14

我假定在创建的字段是datetime。您的第一个查询将按日期时间排序,因此,如果在匹配的值处创建了服务器,那么第二个orderby将不会像它所应用的那样起作用。

这应该起作用:

$this->page["scopeGallery"] = Gallery::orderByRaw(\DB::raw('DATE(created_at) desc'))
                                  ->orderBy('views', 'desc')
                                  ->get();

这将创建以下查询:

select * from `your_table` order by DATE(created_at) desc, `views` desc

 类似资料:
  • 我目前加入了5个表来选择20个对象显示给用户,不幸的是,如果我使用和,它会变得非常慢。 查询的解释显示如下: 所以看起来它没有为表使用键,分析说明它使用2.7s复制到tmp表。 没有使用或,我尝试使用,但不幸的是,这没有改善。 我想我错过了一些基本的概念在这里和任何帮助将是感激的。 由于很可能是我弄错了表,下面是对表的描述: Objekte laender,regionen,subregionen

  • 问题内容: 我正在尝试按DAY对产品进行分组,但是date_created是datetime字段。 返回: 我想要: 编辑: 数据库后端MYSQL 问题答案: 受此问题启发,请尝试针对MySQL

  • 本文向大家介绍PHP 实现浏览记录并按日期分组,包括了PHP 实现浏览记录并按日期分组的使用技巧和注意事项,需要的朋友参考一下 现有测试数据如下,要求实现如下图中的效果: 还没实现之前我想这个代码不知道要O(n)呢还是更高的复杂度才能实现,细想一下,其实php的数组底层就是哈希实现的,如何简单利用这个特性使复杂度降到O(1)呢? show me the code: 说明:入参 $visit 就是上

  • 问题内容: 我在SQL Server中有一个日志表,看起来像这样: 我想要的是一个结果列表,该列表表示每天处理了多少种不同的退款,并抛出了所有NULL。 我需要编写什么SQL才能产生这些结果? 问题答案: 我喜欢(MS SQL)中的这种方法:

  • 介绍 Laravel Dusk 提供了富有表现力、简单易用的浏览器自动化及测试 API 。默认情况下,Dusk 不需要在你的机器上安装 JDK 或者 Selenium 。而是需要使用单独的 Chrome 驱动 进行安装。当然,你也可以自由使用其他的兼容 Selenium 的驱动程序。 安装 你应该先向你的 Composer 依赖添加 laravel/dusk : composer require

  • 这将产生以下结果 我所感兴趣的实际上只是上面结果中的列表,我希望理想地将其作为groupby操作的一部分来完成。我知道这是可以做到的,例如,通过循环结果映射结构。但是有没有一种方法可以使用流来实现它呢?