gpt4 book ai didi

php - 在 Laravel 中批量更新具有不同值的表 [设置]

转载 作者:行者123 更新时间:2023-11-29 07:29:44 27 4
gpt4 key购买 nike

我想要一个更好的方法来更新表,如下所示:

|name           |value
--------------------------------------
|cache_lifespan |240
|idle_time |900
|jump_menu |1
|listing |25
|system_off |1

以上是设置值,我把它们放在一个表单中,有权限的用户可以更新它们。我在模型“设置”中使用以下方法来更新每个设置值,但我觉得这不是完美的方法。

public function updateSettings($fields)
{
Setting::where('name', 'system_off')->update(['value' => $fields['system_off']]);
Setting::where('name', 'listing')->update(['value' => $fields['listing']]);
Setting::where('name', 'jump_menu')->update(['value' => $fields['jump_menu']]);
Setting::where('name', 'cache_lifespan')->update(['value' => $fields['cache_lifespan']]);
Setting::where('name', 'idle_time')->update(['value' => $fields['idle_time']]);

cache()->forget('settings');

}

我试图找到一种通过一个查询更新所有设置的方法。

最佳答案

因为您试图用不同的标准和不同的值更新同一个表,所以这是不可能的。
您还尝试更新许多项目,并且您必须使用交易。
我可以建议您使用此代码

$updatedColumns = ['system_off', 'listing', 'jump_menu', 'cache_lifespan', 'idle_time'];
DB::beginTransaction();
foreach ($updatedColumns as $column) {
if (!Setting::where('name', $column)->update(['value' => $fields[$column]])) {
DB::rollBack();
}
}
DB::commit();

如果你不会使用交易,你可以使用这个代码

$updatedColumns = ['system_off', 'listing', 'jump_menu', 'cache_lifespan', 'idle_time'];
foreach ($updatedColumns as $column) {
Setting::where('name', $column)->update(['value' => $fields[$column]]);
}

关于php - 在 Laravel 中批量更新具有不同值的表 [设置],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52015916/

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