Laravel update() 方法产生“x 没有默认值”错误
Laravel update() method yielding 'x doesn't have a default value' error
我有一个包含以下值的表格:stage_name、stage_type、'client_id'、'created_at'、'updated_at'
我能够创建一种在 table 中添加新项目的方法,但是在尝试更新它时我遇到了这个错误:
"SQLSTATE[HY000]: General error: 1364 Field 'client_id' doesn't have a default value (SQL: insert into stages
(updated_at
, created_at
) values (2020-05-21 02:43:53, 2020-05-21 02:43:53))"
我的控制器更新功能:
public function update(Request $request, Stage $stage)
{
$request->validate([
'stage_name' => 'required|max:300',
'stage_type' => 'required'
]);
$client = Auth::user()->client_id;
$stage->update([
'stage_name' => $request-> stage_name,
'stage_type' => $request->stage_type,
'client_id' => $client,
]);
$stage->save();
return $stage;
}
即使我直接定义 client_id => 1 它仍然会产生相同的错误
您正在使用空的 save() 函数 $stage->save();
并且您没有定义应该更新的记录。只需使用:-
$stage->where($column,$value) //othervise it will update all the records.
->update([
'stage_name' => $request-> stage_name,
'stage_type' => $request->stage_type,
'client_id' => $client,
]);
这段代码足以更新记录,不需要添加save()。如果您想使用保存,请按照以下代码操作。
$stage = $stage->find($id);
$stage->stage_name = $request->stage_name;
$stage->stage_type = $request->stage_type;
$stage->client_id = $request->client;
$stage->save()
您混合了这两种方法。
我有一个包含以下值的表格:stage_name、stage_type、'client_id'、'created_at'、'updated_at'
我能够创建一种在 table 中添加新项目的方法,但是在尝试更新它时我遇到了这个错误:
"SQLSTATE[HY000]: General error: 1364 Field 'client_id' doesn't have a default value (SQL: insert into stages
(updated_at
, created_at
) values (2020-05-21 02:43:53, 2020-05-21 02:43:53))"
我的控制器更新功能:
public function update(Request $request, Stage $stage)
{
$request->validate([
'stage_name' => 'required|max:300',
'stage_type' => 'required'
]);
$client = Auth::user()->client_id;
$stage->update([
'stage_name' => $request-> stage_name,
'stage_type' => $request->stage_type,
'client_id' => $client,
]);
$stage->save();
return $stage;
}
即使我直接定义 client_id => 1 它仍然会产生相同的错误
您正在使用空的 save() 函数 $stage->save();
并且您没有定义应该更新的记录。只需使用:-
$stage->where($column,$value) //othervise it will update all the records.
->update([
'stage_name' => $request-> stage_name,
'stage_type' => $request->stage_type,
'client_id' => $client,
]);
这段代码足以更新记录,不需要添加save()。如果您想使用保存,请按照以下代码操作。
$stage = $stage->find($id);
$stage->stage_name = $request->stage_name;
$stage->stage_type = $request->stage_type;
$stage->client_id = $request->client;
$stage->save()
您混合了这两种方法。