diff --git a/app/Http/Controllers/LikeController.php b/app/Http/Controllers/LikeController.php index 3da7611..4941eaa 100644 --- a/app/Http/Controllers/LikeController.php +++ b/app/Http/Controllers/LikeController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\Like; use Illuminate\Http\Request; +use Illuminate\Database\Eloquent\Relations\MorphTo; class LikeController extends Controller { @@ -94,7 +95,11 @@ public function myLikedItems(Request $request) { $type = $request->get('type'); // Optional filter by type (music or media) - $query = Like::with('likeable') + $query = Like::with(['likeable' => fn (MorphTo $m) => $m->morphWith([ + \App\Models\Media::class => ['image', 'detailImage', 'categories', 'subCategories', 'tags'], + \App\Models\Music::class => ['image', 'playlists', 'tags'], + \App\Models\MusicPlaylist::class => ['image', 'detailImage', 'categories', 'subcategories'], + ])]) ->where('user_id', auth()->id()); if ($type) { diff --git a/app/Http/Controllers/SaveController.php b/app/Http/Controllers/SaveController.php index e7bf3ed..0237111 100644 --- a/app/Http/Controllers/SaveController.php +++ b/app/Http/Controllers/SaveController.php @@ -4,9 +4,22 @@ use Illuminate\Http\Request; use App\Models\SavedItem; +use Illuminate\Database\Eloquent\Relations\MorphTo; class SaveController extends Controller { + // Relations to eager-load for each saveable/likeable type so the full + // model (with its categories, images, tags, ...) is returned. + public static function morphRelations(): array + { + return [ + \App\Models\Media::class => ['image', 'detailImage', 'categories', 'subCategories', 'tags'], + \App\Models\Music::class => ['image', 'playlists', 'tags'], + \App\Models\MusicPlaylist::class => ['image', 'detailImage', 'categories', 'subcategories'], + \App\Models\BreathingTemplate::class => ['image', 'breathingColor'], + ]; + } + /** * Save an item (music, media, breathing template, etc.) */ @@ -95,7 +108,7 @@ public function mySavedItems(Request $request) { $type = $request->get('type'); // Optional filter by type - $query = SavedItem::with('saveable') + $query = SavedItem::with(['saveable' => fn (MorphTo $m) => $m->morphWith(self::morphRelations())]) ->where('user_id', auth()->id()); if ($type) {