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

Laravel更新语句中如何忽略变量?报错‘Invalid column name '0'’

解决Laravel UPDATE按需更新字段的问题

你原来的写法错误在于把字符串直接塞进了update的数组参数里,PHP会自动给这个字符串分配数字索引0,Laravel误以为要更新名为0的列,所以才报"Invalid column name '0'"的错。正确的做法是用动态数组来管理要更新的字段,具体实现如下:

// 先初始化更新数组,添加必填的Strength字段
$updateData = [
    'Strength' => $select->Strength + $request->str,
];

// 当满足条件时,动态添加Leadership字段到数组
$allowedClasses = [64, 65, 66];
if (in_array($select->Class, $allowedClasses)) {
    $updateData['Leadership'] = $select->Leadership + $request->com;
}

// 执行更新
DB::table('Character')
    ->where('Name', '=', $request->char)
    ->update($updateData);

额外优化建议

  • 建议先判断$select是否存在,避免因查询不到数据导致的属性调用错误:
    $select = DB::table('Character')->where('Name', '=', $request->char)->first();
    if (!$select) {
        // 处理查询不到数据的情况,比如返回错误提示
        return;
    }
    
  • 用in_array替代多个OR判断,代码更简洁易维护。

内容的提问来源于stack exchange,提问作者Виктор Минчев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:40:32