Привет участники!
Возникла задача
сделать сортировку по связанным моделям. Покопал интернет и пришел к выводу, что надо делать join.
Написал такую портянку:
$document = Document::select('documents.*', 'c.*', 't.*')
->join('document_customs as c', 'documents.id', '=', 'c.document_id')
->join('document_templates as t', function($query){
$query->on('t.document_type_id', '=', 'documents.type_id');
$query->on('t.field_code', '=', 'c.field_code');
})
->where('documents.id', '=', $document->id)
->orderBy('t.field_order', 'DESC')
->get();
dd($document);
В итоге я получил коллекцию объектов типа Document
Collection {#784 ▼
#items: array:15 [▼
0 => Document {#785 ▶}
1 => Document {#786 ▶}
2 => Document {#787 ▶}
3 => Document {#788 ▶}
4 => Document {#789 ▶}
5 => Document {#790 ▶}
6 => Document {#791 ▶}
7 => Document {#792 ▶}
8 => Document {#793 ▶}
9 => Document {#794 ▶}
10 => Document {#795 ▶}
11 => Document {#796 ▶}
12 => Document {#797 ▶}
13 => Document {#798 ▶}
14 => Document {#799 ▶}
]
}
где в объекты типа Document были тупо напиханы все значения из выборки:
#attributes: array:21 [▼
"id" => 7
"active" => 1
"number" => "С140ХТ1501111"
"name" => "Новый документ1111"
"start_date" => "2019-11-08 00:00:00"
"end_date" => "2019-11-30 00:00:00"
"type_id" => 4
"status_id" => 1
"author_id" => 5
"workflow_id" => null
"workflow_point_id" => null
"approval_user_id" => null
"created_at" => null
"updated_at" => null
"deleted_at" => null
"document_id" => 7
"field_code" => "radio"
"field_value" => "{"10": "Десять", "20": "Двадцать", "30": "Тридцать"}"
"document_type_id" => 4
"field_order" => 55
"model" => null
]
Короче говоря, я в печали. Мне нужно сделать сортировку связанных моделей, зависящих друг от друга, но в итоге получается, что ORM не умеет это делать.
Как тут решить задачу?