Коллекция моделей и их необходимые отношения (загруженные с нетерпением) были получены из БД. При дальнейшей обработке результатов становится необходимым обратить некоторые отношения. Для экономии ресурсов из БД не нужно загружать никаких дополнительных связей.
Исходный запрос выглядит следующим образом:
$resource = Model_A::with([
'Model_B',
'Model_C'
])->paginate(25);
Исходные результаты выглядят следующим образом:
Collection {
#items: array:3 [
0 => Model_A {
...
#relations: array:2 [
"Relation_Model_B" => Model_B { ... },
"Relation_Model_C" => Model_C { ... }
...
},
1 => Model_A {
...
#relations: array:2 [
"Relation_Model_B" => Model_B { ... },
"Relation_Model_C" => Model_C { ... }
...
},
2 => Model_A {
...
#relations: array:2 [
"Relation_Model_B" => Model_B { ... },
"Relation_Model_C" => Model_C { ... }
...
}
]
};
После преобразования результат должен выглядеть следующим образом:
Collection {
#items: array:2 [
0 => Model_B {
...
#relations: array:1 [
"Relation_Model_A" => array:3 [
0 => Model_A { ... },
1 => Model_A { ... },
1 => Model_A { ... }
]
]
...
},
1 => Model_C {
...
#relations: array:1 [
"Relation_Model_A" => array:3 [
0 => Model_A { ... },
1 => Model_A { ... },
1 => Model_A { ... }
]
]
...
}
]
};
Я уже изучал классы Illuminate\Database\Eloquent\Builder
и Illuminate\Database\Eloquent\Model
, но мои знания PHP и Laravel еще недостаточно сильны, чтобы понять это самостоятельно.
Спасибо за вашу поддержку! Это высоко ценится!