Как упорядочить по столбцу во вложенных двухуровневых отношениях в Laravel? - PullRequest
1 голос
/ 08 апреля 2019

У меня есть 3 таблицы: reports, fields и report_fields, которые являются опорой между двумя другими. Мне нужно сделать заказ report_field.field на позицию column в таблице field .

Я пытался упорядочить отношения в Models или при использовании with, но я могу ошибаться. например:

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

Может ли кто-нибудь привести базовый пример заказа двухуровневых вложенных отношений?

Редактировать: мне не нужно упорядочивать по любому столбцу в базовой таблице, кроме списка записей в сводной таблице по столбцу во второй таблице.

Edit2:

Чтобы привести пример порядка вывода:

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

1 Ответ

2 голосов
/ 08 апреля 2019

Вы можете добавить нужный вам порядок относительно отношения первой таблицы reports:

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