Попытка вызвать отношение imageable_type в полиморфной модели

Итак, у меня есть изображения, которые сохраняются конкретной моделью каждый раз, когда они записываются (например, поток, ответ, комментарий).

Я хочу вызвать, чтобы иметь возможность вызывать эти значения, чтобы получить путь, откуда берутся изображения.

Пока у меня есть этот код:

В каждой из моделей (Тема, Ответ, Комментарий):

public function images()
{
    return $this->morphMany(Image::class, 'imageable');
}

В модели изображения:

public function image()
{
    return $this->morphTo();
}

В представлении (я не могу понять, как здесь вызвать связанную модель)

<div class = "image-show">
    Found here: 
    @if ($image->imageable_type == 'App\Thread')
    <a href = "/forums/{{ $image->image->channel->slug }}/{{ $image->image->slug }}/">
        {{ $image->image->title }}
    </a>
    @endif
    @if ($image->imageable_type == 'App\Reply')
    <a href = "">
        {{ dd($image->image()->path()) }}
    </a>
    @endif
    @if ($image->imageable_type == 'App\ProfilePost')
    <a href = "{{ $image->path() }}">{{ $image->image->user->name }}'s profile
    </a>
    @endif
    @if ($image->imageable_type == 'App\ProfilePostComment')
    @endif
    @if ($image->imageable_type == 'App\Product')
    @endif
    @if ($image->imageable_type == 'App\Review')
    @endif
    @if ($image->imageable_type == 'App\ReviewComment')
    @endif
    @if ($image->imageable_type == 'App\Thread')
    @endif
    @if ($image->imageable_type == 'App\ProductComment')
    @endif
    <img src = "{{ $image->path }}">
</div>

Может ли кто-нибудь помочь показать мне, как я могу вызвать отношение imageable_type, чтобы получить атрибуты моделей и использовать их соответствующим образом? Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Следуя соглашениям, определение отношения в модели изображения должно быть

//-----------------------------Option 1------------------------
public function imageable()
{
    return $this->morphTo();
}

//Access the related like
$image->imageable

//-----------------------------Option 2------------------------

//OR if you want to keep it as image, specify type & id columns
public function image()
{
    return $this->morphTo('image', 'imageable_type', 'imageable_id');
}

//Access the related like
$image->image

Другие вопросы по теме