有没有办法在laravel 5.4中检索与软删除用户相关的帖子?我想,因为用户仍然在数据库中应该有办法。
答案 0 :(得分:5)
当您软删除记录时,它会在数据库中删除flagged
,但记录仍然存在。
你仍然可以像这样检索它:
$users = App\User::withTrashed()->get();
答案 1 :(得分:0)
我不想恢复已删除的帖子并保留自己的用户,因为这会导致关系破裂。
但是如果你想恢复它并知道已删除用户的ID,你可以像这样恢复:
Post::onlyTrashed()->where('user_id', $id)->restore();
同样,我建议不这样做。
答案 2 :(得分:0)
$ onlySoftDeleted = Post :: onlyTrashed()-> get();
获取所有已删除的记录
答案 3 :(得分:-1)
我认为这应该有效。
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
特征中定义的方法,如here所述。存在更多'范围扩展'在onlyTrashed
旁边,restore
,withTrashed
,withoutTrashed
。
我不知道,但我认为在->unique('id')
之后添加collapse
也是好的。