You need to enable JavaScript to run this app. Laravel 8中如何仅在视图展示is_active值为1的已发布文章数据?
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8中如何仅在视图展示is_active值为1的已发布文章数据?

Laravel布尔字段筛选已发布文章问题解决

问题核心原因

你当前控制器中的查询仅构造了查询构造器实例,没有触发SQL查询获取实际结果集,因此传到视图的不是可遍历的文章数据,无法正常展示已发布内容。

修复方案

  • 方案1:直接补全查询执行代码
    修改控制器index方法,在where条件后追加get()方法执行查询,布尔值判断直接传整数更符合字段类型规范:
public function index()
{
    $posts = Post::where('is_active', 1)->get();
    return view('pages/home', compact('posts'));
}
  • 方案2:封装查询作用域(适合多场景复用已发布筛选逻辑)
    在Post模型中新增本地作用域方法,后续所有需要筛选已发布文章的场景都可以直接调用,不用重复写where条件:
class Post extends Model
{
    use HasFactory;
    protected $table = 'posts';
    protected $fillable = ['post_title', 'post_slug', 'post_thumbnail', 'post_seq', 'post_excerpt', 'post_description', 'post_meta_title', 'post_meta_description', 'post_meta_keyword', 'is_active', 'created_by'];

    // 新增已发布文章筛选作用域
    public function scopeActive($query)
    {
        return $query->where('is_active', 1);
    }
}

控制器中调用方式简化为:

public function index()
{
    $posts = Post::active()->get();
    return view('pages/home', compact('posts'));
}

额外说明

如果后续需要查询包含草稿的所有文章,直接去掉对应筛选条件即可,无需调整表结构或模型基础配置。

内容的提问来源于stack exchange,提问作者Sutan Firqy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 09:24:08