当前位置: 首页 > 知识库问答 >
问题:

有说服力的多态关系

云隐水
2023-03-14

我正在构建一个应用程序,以Laravel作为前端,Angular作为后端。我正在对用户发表的帖子和评论实施一个类似的系统。我与我的like系统有多态关系,因为用户可以喜欢帖子和评论。我的模型是这样的:

像模特

class Like extends Model
{
    public function likeable()
    {
    return $this->morphTo();
    }
}

后模型

class Post extends Model {
    public function user()
    {
    return $this->belongsTo('App\Models\User', 'author_id');
    }

    public function likes()
    {
    return $this->morphMany('App\Models\Like', 'likeable');
    }
}

注释模型

class Comment extends Model
{
    public function likes()
    {
    return $this->morphMany('Like');
    }
}

我不知道该怎么做。当我加载一篇帖子或一条评论时,我想检索帖子的详细信息(我已经可以检索到了)以及喜欢它的人。如何在帖子中加载“喜欢”的数据?我应该在这里使用多态关系吗?提前谢谢!

我的Like表如下所示:

   Schema::create('likes', function(Blueprint $table) {
        $table->increments('id');

        $table->integer('user_id'); // User who does the liking 
        $table->integer('likeable_id'); // User whose Comment/Post is liked 
        $table->string('likeable_type'); // Item that is being liked
                                        //   Could be Comment or Post (Models)
        $table->timestamps();
    });

共有1个答案

华景焕
2023-03-14

这也是我目前正在研究的事情。在源代码中(乍一看),它说它不会在急切的加载上加载变形为,它只是传递一个虚拟查询。

至于从帖子评论这一方急切地加载内容,你应该很好。

$posts = Post::with('likes')->get();
$comments = Comment::with('likes')->get();

更进一步,因为您只需要计数,而不是每一行的like,所以这样的东西值得一看。

希望这有帮助!

 类似资料:
  • 很好的一天。我在我维护的代码中看到了这个片段。我试着去理解它的意思(比如我甚至需要向别人解释)。谁能帮助简化?代码如下所示。 这和说

  • 我们有以下几种型号- 邮递 使用者 媒体 集团 当我使用eloquent获取帖子时,我可以使用transform函数来转换帖子属性,但无法转换帖子集合中的关系。

  • 我有一个帖子和评论模型。 Post与评论有很多关系。评论与文章有关系。 我想用他们的评论加载帖子,但我想限制每个帖子只能得到3条评论。我怎样才能雄辩地做到这一点? 但是这个限制只会为所有10篇文章加载3条评论,而不是每个文章加载3条评论。 如果这还不可能通过Eloquent实现,是否有其他解决方案也可以实现即时加载? 谢谢

  • 我对雄辩和L4.2有意见 我正在尝试在下面设置自定义轴模型: 下面是我的自定义透视模型“活动用户” 制作模型有一些类似于hasMany(“活动用户”)的方法,称为campaign\u user。 我试着做一些事情,比如: 但我犯了以下错误: 传递给__construct()的Argument 1必须是Illumate\Database\Eloquent\关系\Pivot::模型的一个实例,没有给出

  • 使用 Web API 2.2,我有一个自定义,用于使用自定义方案对客户端请求进行身份验证。 基本上,当客户端没有经过身份验证并且想要访问受保护的资源时,他会在请求旁边发送一个标头:。然后过滤器验证凭据,验证用户身份,并生成无状态身份验证令牌以进行进一步访问(类似于JWT)。 我想将生成的身份验证令牌存储在cookie中。当出现在传入请求中时,cookie会在单独的过滤器中进行本地验证(此处未显示)

  • 如何以多对多关系从Firebase Cloud Firestore构建和查询数据? 我有公司和承包商。一个承包商可以为多个公司工作,一个公司可以有多个承包商。这是一种简单的多对多关系。我希望能够回答有关公司和承包商的问题: 给定一家公司,谁是目前的承包商。给承包商他们在为什么公司工作。什么是正确的方式来构建Cloud Firesta中的数据?