在laravel 5.4

时间:2017-05-07 01:29:13

标签: php laravel

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

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_atnot null列。或者这个,单行也许也可以。

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

onlyTrashedSoftDeletes特征中定义的方法,如here所述。存在更多'范围扩展'在onlyTrashed旁边,restorewithTrashedwithoutTrashed

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