查询生成器不尊重 $fillable

Query builder not respecting $fillable

当我使用以下代码调用 update() 时,它运行良好并且符合 $fillable:

$lead = Lead::findOrFail($id);
$lead->update(request()->all());

但是,当我使用以下代码调用 update() 时,它根本不遵守 $fillable

$lead = Lead::whereRaw('json_extract(lower(data), "$.email") = lower(?)', request()->input('email'));
$lead->update(request()->all());

现在我只能假设这与查询生成器有关。如何让第二位代码符合 $fillable?

在您的第一个查询中,您使用 findOrFail(),它总是 returns 一个模型。

在您的第二个查询中,您的 whereRaw() 函数不知道一行或多行是否符合这些条件,因此它 returns 一个可能包含任意数量元素的集合。

如果您将 ->firstOrFail() 附加到您的第二个查询,它将采用第一个结果,或者如果没有找到结果则失败。