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()

您混合了这两种方法。