我需要从数据库中获取一个元素,但我无法通过 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();