Laravel多态关系-返回关系

问题描述 投票:0回答:1

我想让具有书签的用户使用。这意味着用户可以为帖子,文章等添加书签。所以这是我的模式使用者ID书签IDbookableable_idbookmarkable_type用户身份文章ID帖子ID如您所见,它是一个多态关系。

好吧,我可以为文章添加书签,没关系。我的问题是当我想获取用户的书签时。假设用户有4个帖子已添加书签。他想见他们。

我为此写了一个关系,但是它返回[]; (用户至少有一个带书签的帖子)

User.php

public function bookmarks()
    {
        return $this->morphMany(Bookmark::class, 'bookmarks', 'bookmarkable_type','user_id');
    }

是结果

Illuminate\Database\Eloquent\Collection {#313 ▼
  #items: []
}

这是书签模型:

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

    public function articles()
    {
        return $this->belongsTo(Article::class ,'bookmarkable_id','id');
    }

这就是我尝试访问书签的方式:

$articles  = auth()->user()->bookmarks;
dd($articles);

当我用它来获得加书签的帖子时:

public function bookmarks()
    {
        return $this->hasOne(Bookmark::class,  'user_id','id');
    }

它将返回书签表中的记录。

php laravel polymorphism relation
1个回答
0
投票

您应该获得关系,否则它将是空的。

$articles  = auth()->user()->bookmarks()->get();
dd($articles);
© www.soinside.com 2019 - 2024. All rights reserved.