with('book') ->whereHas('book', function (Builder $query) use ($bookSlug) { $query->where('slug', '=', $bookSlug); }) ->where('slug', '=', $childSlug); } /** * Get the book this page sits in. */ public function book(): BelongsTo { return $this->belongsTo(Book::class)->withTrashed(); } /** * Change the book that this entity belongs to. */ public function changeBook(int $newBookId): Entity { $this->book_id = $newBookId; $this->refreshSlug(); $this->save(); $this->refresh(); // Update all child pages if a chapter if ($this instanceof Chapter) { foreach ($this->pages as $page) { $page->changeBook($newBookId); } } return $this; } }