Как после union двух моделей в коллекции достать связанные данные

Мне нужно сделать как-то union двух моделей без потери сущности модели VideoPhoto моделе я делаю union Video). После объединения я делаю пагинацию, и когда у меня уже есть коллекция спагинированная, я делаю маппинг

$data = $paginator->map(static fn($photoAlbum) => [
            'id'       => $photoAlbum->id,
            //...
            'image'    => $photoAlbum->mainImage?->glideUrl(
                $photoAlbum->type === 'video' ?
                    'video-m' :             // это glide для картинок у видео
                    'photo-gallery-image'   // это glide для картинок у фото
            ) ?? (
                $photoAlbum->type === 'video' ?
                no_image_url() : // фото у видео, когда нет картинки у сущности
                no_photo_url()   // фото у альбома, когда нет картинки у сущности
            ),
        ])->all();

И после получаю спагинированную модель Photo, но в ней только Photo введите сюда описание изображения:

И проблема заключается в том, что у меня в коллекции лежит модель Photo, и соответственно когда я пытаюсь взять mainImage (морф связь), то он всегда отдает mainImage, где model === Photo (на сколько я понимаю) а соответственно у всех видео, он не находит mainImage по причине того что он пытается получить связь из модели Photo.

Подскажите пожалуйста что можно с этим сделать? У меня был вариант делать не union моделей, а сначала сделать запрос на Video с пагинацией, потом на Photo также с пагинацией, и потом объединить их в коллекцию и отсортировать их по дате публикации, но мне данный вариант не очень нравится, по причине, что при пагинации там может быть нарушен порядок элемента (из-за пагинации на каждую модель, а не на одну коллекцию с двумя моделями)


Ответы (0 шт):