首页 > 解决方案 > 无法调用多态关系模型

问题描述

我正在尝试以多态关系达到(例如)visitable_id: 38 visitable_type: App\Thread。我可以使用下面的代码对用户执行此操作,但似乎无法使用线程执行此操作:

刀:

    @foreach ($visits as $visit)
        @if($visit->visitable_type == 'App\User')
        Viewing member profile <a href="/profiles/{{ $visit->user->name }}">{{ $visit->user->name }}</a>
        @endif
        @if($visit->visitable_type == 'App\Thread')
        Viewing thread <a href="/forums/{{ $visit->channel->slug }}/{{ $visit->slug }}/">
        {{ $visit->title }}</a>
        @endif
    @endforeach

控制器:

$visits = Visit::where('user_id', $user->id)->get();

型号: 用户:

public function visits()
{
    return $this->morphMany(Visit::class, 'visitable');
}

public function visit()
{
    return $this->morphOne(Visit::class, 'visitable');
}

型号: 访问:

public function user()
{
    return $this->belongsTo(User::class);
}

public function thread()
{
    return $this->belongsTo(Thread::class);
}

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

型号: 螺纹:

public function visits()
{
    return $this->morphMany(Visit::class, 'visitable');
}

public function visit()
{
    return $this->morphOne(Visit::class, 'visitable');
}

是的,我真的不明白这里的问题是什么,因为当它是用户时我可以获得visitable_id 和visitable_type,但当它是线程时却不能。谁能帮帮我吗?

谢谢!!

标签: laravel

解决方案


我必须在线程的情况下调用关系(所以 $visit->visitable->channel->slug)


推荐阅读