Laravel 更新模型而不是保存新的

Posted

技术标签:

【中文标题】Laravel 更新模型而不是保存新的【英文标题】:Laravel update model instead save new 【发布时间】:2019-03-06 22:33:53 【问题描述】:

我使用的是 Laravel 5.1,我有这个代码:

$settings = new Setting;
            $settings = $user->settings()->first();
            $settings->user_id = $id;
            $settings->save();

并且此代码更新user 模型并且不保存新的。如何保存 NEW 不更新?

【问题讨论】:

第二行的$user 是什么? 您的意思是要保存settings 模型吗?请添加完整代码。 @SundarBan $user = Auth::user(); @BharatGeleda 是的,我想保存设置模型 查看答案。那应该行得通。唯一的问题是您在第二行引用了现有的 Eloquent 模型。 【参考方案1】:

您需要更改要在其中获取设置的变量的名称,如下所示

$settings_old = $user->settings()->first();
$settings = $settings_old->replicate(); 
$settings->user_id = $id;
$settings->save();

【讨论】:

不工作...只是更新设置,不要在数据库中添加新行 我已经更新并使用了replicate() 方法。试试这个。

以上是关于Laravel 更新模型而不是保存新的的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 获取构建器而不是关系

使用 Laravel ORM 抽象保存新的不可为空的关系,而不会违反数据库完整性约束

Laravel - 保存与更新

CoreData - 更新模型类而不是创建新的

Payum - Laravel 4 的包。如何使用 Eloquent 而不是 FilesystemStorage 创建模型数据?

1+X web中级 Laravel学习笔记——Eloquent ORM查询更新删除新增