mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-06-15 23:01:44 +03:00
Eager loading for titles
This commit is contained in:
@ -106,6 +106,10 @@ class ApiEntityListFormatter
|
|||||||
*/
|
*/
|
||||||
public function format(): array
|
public function format(): array
|
||||||
{
|
{
|
||||||
|
if ($this->includeRelatedTitles) {
|
||||||
|
$this->loadRelatedTitles();
|
||||||
|
}
|
||||||
|
|
||||||
$results = [];
|
$results = [];
|
||||||
|
|
||||||
foreach ($this->list as $item) {
|
foreach ($this->list as $item) {
|
||||||
@ -115,6 +119,23 @@ class ApiEntityListFormatter
|
|||||||
return $results;
|
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.
|
* Format a single entity item to a plain array.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user