Laravel — P55:路由中的软删除模型

时间:2023-02-12 12:57:00

Laravel — P55:路由中的软删除模型

完成这样的教程系列并不像看起来那么简单。您想按特定顺序涵盖主题,但每次谈到一个新主题时,您都会意识到您需要涵盖其他内容才能做到这一点。例如,在学习了 Laravel 中一些比较简单的主题之后,我认为我们可以自己解决一些主题,比如路由、模型、控制器等。

我现在有点进退两难。我想介绍的路由系列的最后一个主题是如何包含软删除模型。唯一的问题是,我们还没有介绍如何软删除模型。我们现在覆盖它,然后再覆盖它吗?还是我跳过这篇文章,稍后再回到路线?

软删除模型是什么意思?

通常,当您从数据库中删除记录时,它就是这样做的,它会删除它。当您启用软删除时,该表会获得一个​​deleted_at​​列,该列仅存储删除记录时的时间戳。稍后我们将介绍如何创建这些类型的模型(提示:您在迁移文件中进行)。

如何恢复被软删除的记录?

当你从数据库中返回一个集合时,Laravel 将只返回活跃的记录。这意味着如果记录已被完全删除或软删除,它将不会出现在集合中。但是,如果您希望它也出现在收藏中怎么办?仅当记录已被软删除时才能执行此操作。如果在特定模型上启用了软删除,则可以使用该​​withTrashed​​方法。

use App\Models\User;

Route::get('/users/{user}', function (User $user) {
return $user;
})->withTrashed();

在上面的示例中,我们正在对一个​​User​​实例进行类型提示并搜索用户,即使该用户已被软删除。如果匹配,则返回用户。

我想我们已经尽可能地覆盖了路线。希望我们以后不必再回到他们身边。