Laravel中如何循环筛选post_user_id与user_id匹配的帖子?
解决Laravel Blade筛选当前用户帖子的循环问题
你的写法有误,Blade的@foreach语法不支持直接在后面追加where条件,给你两种可行的实现方案:
方案一:控制器提前筛选(推荐)
在控制器层面就完成当前用户帖子的筛选,再将数据传递给视图,这符合MVC的设计逻辑,性能也更优:
// 控制器代码示例 $posts = Post::where('post_user_id', auth()->user()->id)->get();
之后在Blade视图里直接循环渲染即可:
@foreach($posts as $post) {{-- 这里编写帖子内容的展示代码 --}} <h3>{{ $post->title }}</h3> <p>{{ $post->content }}</p> @endforeach
方案二:视图内条件判断(临时场景可用)
如果暂时不想修改控制器逻辑,也可以在循环内部添加@if判断筛选内容,但这种方式会把数据筛选逻辑混入视图层,不利于代码维护,不推荐长期使用:
@foreach($posts as $post) @if($post->post_user_id == auth()->user()->id) {{-- 编写帖子内容的展示代码 --}} <h3>{{ $post->title }}</h3> <p>{{ $post->content }}</p> @endif @endforeach
注意:确保代码里的字段名和数据库一致,你的帖子表用的是post_user_id,别写成user_id了。
内容的提问来源于stack exchange,提问作者Memonik
相关产品推荐
相关产品推荐

