【问题标题】:How to order by column in nested 2 level relationship in Laravel?如何在 Laravel 的嵌套 2 级关系中按列排序?
【发布时间】:2019-08-29 05:00:43
【问题描述】:

我有 3 个表:reportsfieldsreport_fields,这是其他 2 个表之间的枢纽。我需要做的是在 field 表中按位置 column 订购 report_field.field .

我尝试在Models 或使用with 的关系中进行排序,但我可能做错了。 例如:

$query = Report::with([ 'reportFields.field' => function ($q) {
    $q->orderBy('position', 'asc');
    //$q->orderByRaw("fields.position DESC");
},

有人可以举一个订购 2 级嵌套关系的基本示例吗?

编辑:我不需要按基表中的任何列排序,而是按第二个表中的列对数据透视表中的条目列表进行排序。

编辑2:

举个例子,输出应该如何排序:

Report
    ReportField
        Field.position = 1
    ReportField
        Field.position = 2
    ReportField
        Field.position = 3

【问题讨论】:

标签: php laravel orm nested foreign-keys


【解决方案1】:

您可以在第一张表reports的关系上添加您需要的排序:

public function reportFields()
{
    return $this->hasMany(ReportFields::class)
        ->select('report_fields.*')
        ->join('fields', 'report_fields.field_id', 'fields.id')
        ->orderBy('fields.position', 'asc');
}

【讨论】:

    猜你喜欢
    • 2020-04-14
    • 2021-01-20
    • 2021-03-18
    • 1970-01-01
    • 2020-02-12
    • 2014-06-25
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多