Laravel Eloquent - 更新()函数

Posted

技术标签:

【中文标题】Laravel Eloquent - 更新()函数【英文标题】:Laravel Eloquent - update() function 【发布时间】:2014-07-19 20:41:37 【问题描述】:

Laravel 的 Eloquent update() 函数返回一个布尔值,而不是更新后的条目。我正在使用:

return User::find($id)->update( Input::all() )

这只会返回一个布尔值。有没有办法在不运行另一个查询的情况下获取实际行?

【问题讨论】:

【参考方案1】:

另一种方法可以是使用 laravel tap 辅助函数。

这是一个使用它来更新和获取更新模型的示例:

$user = User::first();
$updated = tap($user)->update([
    "username" => "newUserName123"
]);

tap($user) 允许我们链接该模型中的任何方法。而最后,它将返回 $user 模型,而不是 update 方法返回的模型。

【讨论】:

【参考方案2】:

我认为这就是你想要的行为:

$user = User::find($id)->fill(Input::all());
return ($user->update())?$user:false; 

我希望它对你有用。

【讨论】:

您先生是救世主!有没有办法通过传递关系数据来使用fill(),然后使用push()来更新所有? 我对基础 Model 类进行了更改,并且在保存/更新之前对输入进行了预处理。我在同一个事务中拆分了相关的输入数据并保存/更新,但 Eloquent 默认不这样做。 好的,在这种情况下,我会做类似的事情

以上是关于Laravel Eloquent - 更新()函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 5 中使用 Eloquent 更新数据透视表

有没有办法在 Laravel 5.8 中测试 Eloquent Observers?

通过 eloquent 更新 laravel 中的多行

Laravel Eloquent 显示后更新

使用 Laravel Eloquent 使用复合键更新表

Laravel 不使用 Eloquent 更新项目