以下软删除代码对我来说很好:

$post = Post::find($post_id);
$post->delete();

已删除的_at字段将被更新.但这给了我一个错误:

$post = Post::find($post_id);
$post->restore();

以下是错误:

exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to a member function restore() on a non-object'

I'm stumped. Google is no help so far.

推荐答案

错误说明$post是非对象,如果没有withTrashed(),Laravel不会返回垃圾记录

Post::withTrashed()->find($post_id)->restore();

Laravel Docs - Soft Deleting

When querying a model that uses soft deletes, the "deleted" models will not be included...

Laravel相关问答推荐

用Laravel Filament创建变形组件

Laravel 9 中使用 WHERE 子句的列的 SUM

Laravel查询多对多关系

在部署到 AWS 时保持我的环境参数安全

找不到 Laravel 5 类日志(log)

使用命令行界面停止 laravel 服务器

覆盖 HTTP 标头的默认设置 (X-FRAME-OPTIONS)

Laravel + SQLite = SQLSTATE[HY000]一般错误:8次try 写入只读数据库

通过单击按钮保存 PhpSpreadSheet

Laravel:`loadMissing` 函数的目的是什么?

你如何在自定义 Laravel Nova 工具中使用确认对话?

在 Laravel 中下载后如何重定向?

在 Laravel 5.4 中将中间件应用于除 `setup/*` 之外的所有路由

在 Laravel 容器中覆盖单例

Laravel 全部返回 ID 变为 0

Laravel / Eloquent内存泄漏重复检索相同的记录

如何在 Laravel 5.2 中使用 OR 条件将多个参数传递给中间件

Laravel 5 事件处理程序未触发

在laravel中删除确认

Laravel 将附加参数传递给函数