You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从morphMany关联中获取用户收藏项的相关信息?

解决用户收藏项信息的正确获取方式

从你给出的调试信息来看,问题出在你访问的属性不对,咱们一步步理清楚:

首先看你调试的结果:

  • $activity->subject 返回的是Post模型(也就是被收藏的内容本身),但它本身并没有favorited这个关联(favorited是Favorite模型里定义的morphTo关联)
  • 而$activity->result 返回的是Favorite模型,并且已经预加载了favorited关联(你能看到relations数组里已经包含了对应的Post实例)

所以正确的获取姿势应该从$activity->result入手,而不是$activity->subject。

具体实现步骤

  1. 在Blade视图中直接访问收藏的内容主体:
{{-- 显示收藏内容的具体内容 --}}
{{ $activity->result->favorited->content }}
  1. 如果需要区分收藏的是帖子还是评论,可以通过类型判断:
@if($activity->result->favorited_type === 'App\Post')
    <p>用户收藏了帖子:{{ $activity->result->favorited->content }}</p>
@elseif($activity->result->favorited_type === 'App\Comment')
    <p>用户收藏了评论:{{ $activity->result->favorited->content }}</p>
@endif

或者用更优雅的类型实例判断方式:

@if($activity->result->favorited instanceof \App\Post)
    <div class="post-favorite">
        <h4>收藏的帖子</h4>
        <p>{{ $activity->result->favorited->content }}</p>
    </div>
@elseif($activity->result->favorited instanceof \App\Comment)
    <div class="comment-favorite">
        <h4>收藏的评论</h4>
        <p>{{ $activity->result->favorited->content }}</p>
    </div>
@endif
  1. 额外检查:确保你的Activity模型的result关联定义正确,这样才能正确关联到Favorite模型:
// Activity.php
public function result()
{
    return $this->morphTo();
}

这样调整后,你就能正确获取到用户收藏的帖子或评论信息了。

内容的提问来源于stack exchange,提问作者Albert A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:34:28