在 Laravel 中捕获并保存元素,而不是通过 primaryKey



我需要从数据库中获取一个元素,但我无法通过 FIND 方法获取它,因为 FIND 只能通过 primaryKey 找到它,而我需要的不是通过我的 primaryKey。所以我这样做了:

 $user = Pac::find($request->pac_id);
 $element = query()->where('med_cart', $user->pac_id)->get();
 $element->med_obs = $request->med_obs;
 $element->save(); // error

现在我需要保存这个元素,但是,我不能使用 SAVE 方法,因为我相信它与 FIND 和 FINDORFAIL 完全相关(如果有人知道,请向我解释我可以使用 SAVE 方法的方法(。

怎样才能像我一样保存它们?还是有其他方法可以做到这一点?

因为我需要获取包含 primaryKey 以外的数据的元素,然后保存它,所以我认为我不能使用 FIND 或 FINDORFAIL。

该函数->find()返回一个 Eloquent Model实例,然后您可以在模型实例上调用 ->save()

您正在使用返回Collection ->get()

要更新查询(可能针对一个或多个条目(,只需直接从 QueryBuilder 执行更新语句,将 ->get() 替换为 ->update(['med_obs' => $request->med_obs])

请注意,在执行此操作时,您现在使用的是 Fluent 查询,而不是雄辩查询。这意味着不会评估您在模型的boot函数中定义的任何逻辑。

如果确定只有一个结果,则可以将->first()追加到查询中,这将返回与 ->where 子句匹配的第一个结果的 Model。然后,您可以在其上调用->save()

$user = Pac::find($request->pac_id);
$element = query()->where('med_cart', $user->pac_id)->first();
$element->med_obs = $request->med_obs;
$element->save();

最新更新