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

Laravel中如何编写带双重where条件的update语句?

解决Laravel双重WHERE条件更新失效问题

先排查几个核心问题:

  • 检查模型批量赋值权限
    确保ContractorsServices模型的$fillable数组包含isPopular字段,否则Laravel的批量赋值保护会拦截更新操作:

    class ContractorsServices extends Model
    {
        protected $fillable = ['serviceID', 'isPopular']; // 必须包含要更新的字段
    }
    
  • 验证参数与字段类型匹配

    1. 先打印$request->id确认参数值是否正确:dd($request->id);,确保serviceID能匹配到数据库中的记录。
    2. 若isPopular是数据库tinyint(1)类型,尝试用数值代替布尔值查询(部分Laravel版本对布尔值的转换存在差异):
      ContractorsServices::where('serviceID', $request->id)
          ->where('isPopular', 0)
          ->update(['isPopular' => 1]);
      
  • 查看实际执行的SQL语句
    开启查询日志,确认生成的SQL是否符合预期:

    DB::enableQueryLog();
    ContractorsServices::where('serviceID',$request->id)->where('isPopular', false)->update(['isPopular' => true]);
    dd(DB::getQueryLog());
    

    通过日志能直观看到WHERE条件是否正确,以及是否有匹配到目标记录。

  • 手动验证SQL有效性
    把查询日志里的SQL语句拿到数据库客户端直接执行,确认是否能成功更新。如果数据库中不存在serviceID = 目标值 AND isPopular = false的记录,代码自然不会产生更新效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:39:51