X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/1c43602f4bed60a84f47735ca8bc4a399018e013..refs/pull/3391/head:/app/Entities/Models/BookChild.php diff --git a/app/Entities/Models/BookChild.php b/app/Entities/Models/BookChild.php index f61878208..e1ba0b6f7 100644 --- a/app/Entities/Models/BookChild.php +++ b/app/Entities/Models/BookChild.php @@ -8,16 +8,31 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; /** * Class BookChild. * - * @property int $book_id - * @property int $priority - * @property Book $book + * @property int $book_id + * @property int $priority + * @property string $book_slug + * @property Book $book * * @method Builder whereSlugs(string $bookSlug, string $childSlug) */ abstract class BookChild extends Entity { + protected static function boot() + { + parent::boot(); + + // Load book slugs onto these models by default during query-time + static::addGlobalScope('book_slug', function (Builder $builder) { + $builder->addSelect(['book_slug' => function ($builder) { + $builder->select('slug') + ->from('books') + ->whereColumn('books.id', '=', 'book_id'); + }]); + }); + } + /** - * Scope a query to find items where the the child has the given childSlug + * Scope a query to find items where the child has the given childSlug * where its parent has the bookSlug. */ public function scopeWhereSlugs(Builder $query, string $bookSlug, string $childSlug)