php - Laravel 流明没有正确更新
问题描述
当我想用邮递员更新名称时,名称将被更新,但不会更新为我想要更新的名称。
例如,我想更新名称:Jan to Pieter。但是当我将名称 Pieter 放在邮递员中时,它会更新但不会更新为名称 Pieter。更新后的名称现在是 Tijn。
如果有帮助,这是我的代码
$router->put('dogs/{id}', function(Request $request, $id){
$data=[];
if ($request->has('name')){
$data['name'] = $request->input('name');
}
$dog = DB::table('dogs')
->where('id', $id)
->update($data);
return response()->json($dog);
});
解决方案
获取整个请求正文并使用该数组更新字段不是一个好习惯,即使它们具有相同的名称。
尝试以下方法:
$dog = DB::table('dogs')
->where('id', $request->route()->parameter('id'))
->update(['name' => $request->input('name')]);
因为 id 匹配可以解决您的问题。
此外,由于您提到邮递员,请记住您必须使用x-www-form-urlencode
选项卡而不是正常form-data
的 for PUT
orPATCH
操作。
推荐阅读
- node.js - 谷歌云设置有问题,我的密钥文件不断收到无效的 arg 类型
- android - 自定义 android lint 规则未执行
- r - 根据另一组具有相应结尾的变量,重新编码与字母 A、B 等相对应的多组变量
- javascript - 如何将元素添加到 Javascript 中的对象数组?
- node.js - 节点 Js - AWS 信号:中止(核心转储)
- flutter - 使用颤振将图像定位在颜色条下方
- reactjs - 反应记忆游戏:状态更新不同步
- ruby - 总和目录的总文件大小相差很大:Ruby -e,du -ach,ls -al“total”
- python - 尝试在 lambda 中同步两个 s3 存储桶
- swift - 为什么几天后我的每日重复本地通知不起作用?