通过关系从类别ID获取类别名称。拉拉韦尔

时间:2020-07-22 03:50:12

标签: php laravel eloquent

我浏览了整个论坛,但是到目前为止,我所看到的解决方案与我所遇到的问题不一致,因此,我希望有更多信息的人能够为您提供帮助。

所以我有一个类别调制解调器和一个帖子模型,并且关系如下;

关于帖子模型:

public function postcategory(){
    return $this->belongsTo(PostCategory::class);
}

关于类别模型:

public function posts(){
    return $this->hasMany(Post::class)->where('approved', 'true');
}

并且我正在使用slug,通过以下功能来检索属于某个类别slug的所有帖子:

public function cats($category){
    $posts = PostCategory::where('category_slug', $category)->first()->posts;
    $category = PostCategory::where('category_slug', $category)->first();
    return view('posts', compact('posts', 'category')); 
}

现在,我正在尝试获取具有存储在posts表中的类别ID的类别名称。例如,如果我的类别ID为1,并且在类别表上,如果ID号为1,则如何返回名称PHP,而不是ID 1?

第二,如果我想对将帖子压缩到的视图进行分页,该怎么做?我将控制器中的代码切换为此:

$posts = PostCategory::with('posts')->where('category_slug', $category)->paginate(15);

当我添加这行代码时,它返回一些值(带有关系),但是当我将其传递给视图时,会出错。

希望有人能看到这个并帮我。 :D

1 个答案:

答案 0 :(得分:0)

关于类别模型:

public function posts()
{
    return $this->hasMany(Post::class);
}

在控制器上:

public function cats($slug)
{
    $category = PostCategory::whereSlug($slug)->firstorFail();
    $posts= $category->posts()->where('approved', 'true')->paginate(15);
    return view('category.show', compact('posts', 'category'));
}

查看时:

@foreach($posts as $post)
 $post->title
 ....
@endforeach
{{ $posts->links() }}