大佬教程收集整理的这篇文章主要介绍了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();
并且我看到两个记录都正确保存,所以我有 name1
和 name2
。
您可以在 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,请注明来意。