laravel - Laravel 使用查询生成器更新记录
问题描述
我从事 laravel 项目并尝试使用查询生成器更新记录但它不起作用,这是我尝试在其中编辑记录的功能
public function editchecksave(Request $request)
{
$id = $request->id;
$username = $request->username;
$attribute = $request->attribute;
$value = $request->value;
$op = $request->op;
$result = DB::update('update radcheck set username = "?" ,
attribute="?",value="?" ,op="?" where id = ?',
[$username,$attribute,$value,$op,$id]
);
if ($result)
{
return response()->json([ 'msg' => 'Updated Successfully' . $username]);
}
return response()->json([ 'msg' => 'Not Updated Successfully'. $value]);
}
这是路线
Route::get( 'radcheckedit', 'radcheckController@editchecksave' );
当我不更改更新查询中的第一个元素时,它没有更新,但是当我更改第一个元素时,它成功更新了。换句话说(当我更改用户名的值时,它成功更新并且当我不更改用户名时没有更新,当我将属性第一个元素放在查询中时,它必须更改它的值才能进行更新,因此用户必须更改查询的第一个值,这不好,因为用户可能不想编辑这个元素)
它给了我消息未成功更新
解决方案
您不应该在函数中放置原始查询update
,它需要一组要更新的值。您可以使用内置的 querybuilder 编写查询:
$result = DB::table('radcheck')
->where('id', $id)
->update([
'username' => $username,
'attribute' => $attribute,
'value' => $value,
'op' => $op
]);
甚至更好,而无需手动从请求中获取变量:
$result = DB::table('radcheck')
->where('id', $id)
->update($request->only(['username', 'attribute', 'value', 'op']));
这也将使代码更具可读性。
推荐阅读
- python - 单点交叉功能不循环工作
- apache-spark - 添加新的数组类型列时引发 UDF 问题
通过转换现有列之一 - c# - 如何为验证规则的默认工具提示制作自定义模板?
- python - 使用solve_ivp 没有得到正确的解决方案
- excel-formula - 试图创建一个 Excel 产品公式手册到动态
- javascript - 通过Javascript ArcGIS Api绘制折线时如何获取特定区域的医院或街道名称?
- android - 从工具栏中的 sqlite 检索当前登录用户
- javascript - 如何使用 Node.js 获取 Redis 中的连接数?
- flutter - 如何使 FCM 通知在颤动中不可移除?
- python - 如何在python字典中的索引值内执行操作