You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel后台修改Post的active状态无效,点击提交无数据库变更怎么办?

问题排查与解决
  • 表单传值逻辑错误
    你点击的是「Make inactive」按钮,目的是将激活状态(active=1)的文章改为非激活(active=0),但表单里的hidden字段active传的value是1,等于把状态又设回了原来的值,数据库自然不会有变化。应该把value改成0:

    <input type="number" id="active" name="active" value="0" hidden readonly>
    
  • Post模型未配置可填充字段
    Laravel默认会保护模型的批量赋值操作,如果你没在Post模型的$fillable数组里加入active字段,$post->update($attribute)不会对该字段生效。需要在模型中添加:

    class Post extends Model
    {
        protected $fillable = ['active', // 其他需要批量赋值的字段];
    }
    
  • 优化方案:直接切换状态
    既然是切换状态,其实不需要通过表单传递值,直接在控制器中取反当前模型的active值更简洁,还能避免传值错误:

    public function makeInactive(Post $post){
        // 取反当前状态,1变0,0变1
        $post->update(['active' => !$post->active]);
        return redirect()->back();
    }
    

    对应的表单也可以去掉hidden的active字段,简化代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:45:34