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

如何在Laravel中的其他两个联接表上按日期列排序表?

长孙明知
2023-03-14

我有以下表格:

table_1
id      | table_2_id |  table_3_id | table_1_specific_columns
1       | null       | 1           |
2       | 1          | null        |
...

以及:

table_2
id      | table_2_specific_columns| date
1       | blabla                  | 01-01-1990
2       | bababa                  | 02-02-1992
...

以及:

table_3
id      | table_3_specific_columns| date
1       | blabla                  | 01-01-1991
2       | bababa                  | 02-02-1989
...

数据库是PostgreSQL

如何订购table_1按日期列table_2和table_3联接表在Laravel?

这可以用雄辩来完成吗?

编辑:如果可以使用Elounce完成,则预期结果是表1模型的集合,表2和表3的关系由表2和表3中的日期列排序

编辑2:

表1的asc排序的预期结果。添加日期列是为了快速参考,不是必需的。

id      | table_2_id |  table_3_id           | date
1       | null       | 2                     | 02-02-1989
2       | 1          | null                  | 01-01-1990
1       | null       | 1                     | 01-01-1991
2       | 2          | null                  | 02-02-1992

共有2个答案

洪华皓
2023-03-14

嗨你可以用句法

奥德伯劳

因此,您的代码将类似于:

Table::orderByRaw("column DESC, column2 ASC")->get();
陈扬
2023-03-14

从你分享的内容来看,你要么table_2要么table_3关系(如果有的话),所以你可以这样做:

DB::table('table_1')
    ->leftJoin('table_2', 'table_1.table_2_id','table_2.id')
    ->leftJoin('table_3', 'table_1.table_3_id','table_3.id')
    ->select('table_1.*')
    ->orderByRaw('COALESCE(table_2.date, table_3.date)');

注:如果一行涉及表2和表3,顺序仅由table_2给出

这里的缺点是,您还将包括任何与任何内容无关的table_1行。您可以通过添加来省略这些

如果您有一个模型,您可以修改以上内容以使用,例如Table1::leftJoin而不是使用DB::table在这种情况下select('table_1.*')变得更加重要,不能在模型对象中添加错误的值

 类似资料:
  • 因此,我有两个表,它显示的值类似于Facebook look-a feed。它们都有一个列,名为,但我希望它们按日期desc排序。 我认为加入是正确的方式(?),但不太确定。有人能帮帮我吗? 目前我在两个不同的查询中有它们: 而且 我该怎么做呢?

  • 问题内容: 我不是数据库专家,所以我需要一些有关正在处理的查询的帮助。在我的照片社区项目中,我不仅要显示标签名称和计数器(标签中的图像数量),而且还想显示标签中最受欢迎的图像(最因果),以丰富标签的可视化效果。 表设置如下: 图像表包含基本图像元数据,重要的是因果字段 Imagefile表每个图像包含多个条目,每种格式一个 标签表保存标签定义 Tag_map表将标签映射到图像 在我通常的试验和错误

  • 我有下面的列表,我试着按日期时间重新排序。 我想以最远到期日期最先显示的方式重新排序列表: 我尝试过的(更新)- 在排序函数上,我收到了这个错误(通过上述修复解决):

  • 我有一个对象列表,其中的数据如下: XYZ 11-10-2012 ABC 11-10-2012 PQR 20-04-2012 IJK 24-08-2012 MnO 22-05-2014

  • 问题内容: 如何排序日期对象列表?例如,我有未排序的日期对象列表。如何从此列表中获取最大值/最小值? 问题答案: 使用列表排序方法: 有关如何排序的更多信息。

  • 我有这样一个情况: 我必须对进行排序,该列表还包含的ID,排序必须为: null