gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 19:23:18 24 4
gpt4 key购买 nike

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

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

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

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

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

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

关于php - 在 Laravel 中捕获并保存元素,而不是通过 PrimaryKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55730674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com