feat: add relations in like and save

This commit is contained in:
2026-06-16 19:13:07 +03:30
parent 42f3808343
commit f3f05958a6
2 changed files with 20 additions and 2 deletions
+6 -1
View File
@@ -3,6 +3,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\Like; use App\Models\Like;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\Relations\MorphTo;
class LikeController extends Controller class LikeController extends Controller
{ {
@@ -94,7 +95,11 @@ public function myLikedItems(Request $request)
{ {
$type = $request->get('type'); // Optional filter by type (music or media) $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()); ->where('user_id', auth()->id());
if ($type) { if ($type) {
+14 -1
View File
@@ -4,9 +4,22 @@
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\SavedItem; use App\Models\SavedItem;
use Illuminate\Database\Eloquent\Relations\MorphTo;
class SaveController extends Controller 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.) * 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 $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()); ->where('user_id', auth()->id());
if ($type) { if ($type) {