Eager loading for titles

This commit is contained in:
Rashad 2024-10-21 03:01:33 +05:30
parent 3e656efb00
commit 90a8070518

View File

@ -106,6 +106,10 @@ class ApiEntityListFormatter
*/
public function format(): array
{
if ($this->includeRelatedTitles) {
$this->loadRelatedTitles();
}
$results = [];
foreach ($this->list as $item) {
@ -115,6 +119,23 @@ class ApiEntityListFormatter
return $results;
}
/**
* Eager load the related book and chapter data when needed.
*/
protected function loadRelatedTitles(): void
{
$pages = collect($this->list)->filter(fn($item) => $item instanceof Page);
foreach ($this->list as $entity) {
if (method_exists($entity, 'book')) {
$entity->load('book');
}
if ($entity instanceof Page && $entity->chapter_id) {
$entity->load('chapter');
}
}
}
/**
* Format a single entity item to a plain array.
*/