получить аватар пользователя с авторизацией и полиморфным отношением

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

На самом деле для лучшей практики я использую полиморфную связь с таблицей изображений.

Моя таблица изображений выглядит так.

Schema::create('images', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('path');
        $table->string('alt');
        $table->string('title');
        $table->string('link');
        $table->integer('imageable_id');
        $table->string('imageable_type');
        $table->timestamps();
    });

Мой путь связан с моим аватаром, а в отношении imageable_id user_id и imageable_type связанная модель (пользователь).

Но когда я проверяю, зарегистрирован ли пользователь, и после попытки доступа к моему объекту с помощью

@if(Auth::user()->image )
<img alt="" src="{{????????}}">
@endif

В моей модели User у меня такое отношение

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

Как получить доступ к моему пути моего изображения пользователя с помощью Auth::user()->image

Спасибо


person nicolassiuol    schedule 04.03.2016    source источник


Ответы (1)


Поскольку morphMany() допускает множественные отношения, я бы сначала переименовал метод в images():

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

Затем я бы создал еще один метод для модели User, например, defaultImage(), что означало бы первое изображение:

public function defaultImage()
{ 
    return $this->images()->first();
}

Тогда в ваших шаблонах это будет:

@if(!is_empty(Auth::user()->defaultImage()))
    <img alt="" src="{{ Auth::user()->defaultImage()->path }}">
@endif
person Denis Mysenko    schedule 04.03.2016