gpt4 book ai didi

php - Laravel - 保存与更新

转载 作者:行者123 更新时间:2023-12-03 19:10:51 25 4
gpt4 key购买 nike

我想知道哪个是更新数据库记录的更好解决方案 - addResources1addresources2 ?

首先我尝试了 update查询方法,因为它对我来说很清楚。第二个想法是,我正在构建模型,所以让我们使用它们然后保存。

你怎么认为?

有几个类似的话题,但是他们说save()只会插入一个新记录,在这种情况下它不是真的。

资源服务:

 namespace App\Services;

use App\Resource as Resource;
use Illuminate\Support\Facades\Auth;

class ResourcesService
{

public function addResources1($userId, $wood, $stone, $food, $gold)
{
$resources = new Resource;
$resources = $resources->where('userId', $userId)->update([
'wood' => $wood,
'stone' => $stone,
'food' => $food,
'gold' => $gold,
]);
}

public function addResources2($userId, $wood, $stone, $food, $gold)
{
$resources = new Resource;
$resources = $resources->where('userId', $userId)->first();
$resources->wood = $wood;
$resources->stone = $stone;
$resources->food = $food;
$resources->gold = $gold;
$resources->save();
}
}

资源模型:
namespace App;

use Illuminate\Database\Eloquent\Model;

class Resource extends Model
{
protected $table = 'resources';

}

最佳答案

这取决于您的用例。

1) 什么将有最少的 SQL 查询?

方法addResources1将使用 1 个 SQL 查询。

方法addResources2将使用 2 个 SQL 查询。一个用于获取记录,另一个用于更新记录。

2) 模型敏感吗? (例如 is_admin bool 列)

如果它确实有敏感列,则不应将该列放入 fillable模型的属性和方法 addResources1将失败。

3) 在记录更新之后但在提交到数据库之前,我是否需要做其他事情?

在这种情况下,addResources2会更适合你,因为它不会提交除非 save()执行,这是在您完成所有其他业务逻辑之后。

关于php - Laravel - 保存与更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62230652/

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