程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Laravel Eloquent 在 ->save() 方法背后的核心代码是什么来选择在数据库中创建或编辑新记录大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Laravel Eloquent 在 ->save() 方法背后的核心代码是什么来选择在数据库中创建或编辑新记录?

开发过程中遇到Laravel Eloquent 在 ->save() 方法背后的核心代码是什么来选择在数据库中创建或编辑新记录的问题如何解决?下面主要结合日常开发的经验,给出你关于Laravel Eloquent 在 ->save() 方法背后的核心代码是什么来选择在数据库中创建或编辑新记录的解决方法建议,希望对你解决Laravel Eloquent 在 ->save() 方法背后的核心代码是什么来选择在数据库中创建或编辑新记录有所启发或帮助;

我知道 Laravel 正在检查 object reference ID 以检查对象是否存在,因此 save() 方法将运行 edit 方法来编辑它。如果它是一个新对象它将运行 create() 方法。

但我在 Eloquent 包中找不到它背后的代码。

我想要包含这些代码的文件的确切地址

从打击代码我推断出上述结论:

我在 Laravel 中编写了这段代码:

$setTing = new SetTing;
$setTing->name = 'name1';
$setTing->save();

$setTing->name = 'name2';
$setTing->save();

执行后我在数据库中只看到 name2 并且似乎在保存 name1 Laravel 后编辑它并将 name2 保存在数据库中。

在我执行这段代码之后:

$setTing = new SetTing;
$setTing->name = 'name1';
$setTing->save();
$setTing = new SetTing;
$setTing->name = 'name2';
$setTing->save();

并且我看到两个记录都正确保存,所以我有 name1name2

解决方法

您可以在 Laravel 8.12 的第 833 行的 save() 中找到 Eloquent 的 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php 方法的代码。

您观察到的行为是 Laravel 所基于的 Active Record 模式的一个特征。每次使用 new 创建 Eloquent 模型时,它都会创建一个对象,该对象将代表数据库中的一行。在 Eloquent 的 save() 方法中,它会检查记录是否已经存在,如果存在则更新它(代码如下)。

if ($this->exists) {
    $saved = $this->isDirty() ?
                $this->performupdate($query) : true;
}

您的代码按预期工作。

大佬总结

以上是大佬教程为你收集整理的Laravel Eloquent 在 ->save() 方法背后的核心代码是什么来选择在数据库中创建或编辑新记录全部内容,希望文章能够帮你解决Laravel Eloquent 在 ->save() 方法背后的核心代码是什么来选择在数据库中创建或编辑新记录所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: