feat: add relations in like and save
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user