繁体   English   中英

在 Laravel 5.4 中检索软删除的用户帖子

[英]Retrieve soft deleted user posts in laravel 5.4

有没有办法在laravel 5.4中检索与软删除用户相关的帖子? 我在想,既然用户仍在数据库中,应该有办法。

当您软删除一条记录时,它会在数据库中被flagged为已删除,但该记录仍然存在。

您仍然可以像这样检索它:

$users = App\User::withTrashed()->get();

我不喜欢恢复已删除的帖子并保留自己的用户已删除,因为这将返回断开的关系。

但是如果你想恢复它并知道被删除用户的 ID,你可以像这样恢复:

Post::onlyTrashed()->where('user_id', $id)->restore();

再次,我建议不要这样做。

$onlySoftDeleted = Post::onlyTrashed()->get();

获取所有已删除的记录

这应该有效,我想。

Post::whereHas('users', function ($q) {
    $q->whereNotNull($q->getModel()->getQualifiedDeletedAtColumn());
})->get();

它基本上是添加一个 where 子句来加入表deleted_at列,它not null 或者这个,单行一号也可能有效。

User::with('posts')->onlyTrashed()->get()->map->posts->collapse();

onlyTrashed是一个在SoftDeletes trait 中定义的方法,如这里所述。 除了onlyTrashed ,还有更多“范围扩展”,它们是restorewithTrashedwithoutTrashed

我不知道,但我认为在collapse后添加->unique('id')也很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM