Php 拉雷维尔,类别关系职位

Php 拉雷维尔,类别关系职位,php,laravel,Php,Laravel,所以我不知道如何在我的foreach中使用带有类别的帖子。 控制器 $Categories = \App\Category::Where('displayed',1)->get(); foreach ($Categories as $Category){ $CategoryPosts[]=$Category->load('posts'); } dd($CategoryPosts); ret

所以我不知道如何在我的foreach中使用带有类别的帖子。 控制器

        $Categories = \App\Category::Where('displayed',1)->get();
        foreach ($Categories as $Category){
        $CategoryPosts[]=$Category->load('posts');
        }
        dd($CategoryPosts);
        return view('welcome', compact($CategoryPosts));
页面

@forelse($CategoryPosts作为$post)
图像}}“>

{{$post->created_at}}
{{{$post->short_desc}

@空的
没有时间
没有帖子

@endforelse
我有2个类别和3个职位的权利。
.

您可以从另一个方向执行此操作,仅获取帖子:

$posts = Post::whereHas('category', function ($query) {
    $query->where('displayed', 1);
})->get();
假设你有一个相反的关系设置帖子->类别。这意味着获取所有帖子,其中显示的类别等于1

根据需要调整关系名称


whereHas

非常简单的答案和更简洁的$posts=\App\Post::whereHas('category',function(Builder$query){$query->where('displated',1)});返回视图('welcome',compact($posts));语法错误,意外“}”…找不到error@Maksym你应该复制这里的内容,而不是键入它,因为你缺少一个分号;)是的,但是现在所有的帖子都像是在一个集合中。如果我需要做一个简单的分类,比如体育或时尚,而不是一个集合中的所有帖子,我想我会使用@foreach(CategoryPosts[0]->发布为post),但它不起作用
$posts = Post::whereHas('category', function ($query) {
    $query->where('displayed', 1);
})->get();