mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-02-24 08:03:11 +08:00
Eager loading for titles
This commit is contained in:
parent
3e656efb00
commit
90a8070518
@ -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.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user