Files
BookStack/app/Entities/Queries/PageQueries.php
Dan Brown a70ed81908 DB: Started update of entity loading to avoid global selects
Removes page/chpater addSelect global query, to load book slug, and
instead extracts base queries to be managed in new static class, while
updating specific entitiy relation loading to use our more efficient
MixedEntityListLoader where appropriate.

Related to #4823
2024-02-04 14:39:36 +00:00

32 lines
796 B
PHP

<?php
namespace BookStack\Entities\Queries;
use BookStack\Entities\Models\Page;
use Illuminate\Database\Eloquent\Builder;
class PageQueries
{
public static function start(): Builder
{
return Page::query();
}
public static function visibleForList(): Builder
{
return Page::visible()
->select(array_merge(Page::$listAttributes, ['book_slug' => function ($builder) {
$builder->select('slug')
->from('books')
->whereColumn('books.id', '=', 'pages.book_id');
}]));
}
public static function currentUserDraftsForList(): Builder
{
return static::visibleForList()
->where('draft', '=', true)
->where('created_by', '=', user()->id);
}
}