Skip to content

Instantly share code, notes, and snippets.

@jobcerto
Last active August 17, 2018 05:44
Show Gist options
  • Save jobcerto/b5e291a2d10e2c0218e873cfd798776a to your computer and use it in GitHub Desktop.
Save jobcerto/b5e291a2d10e2c0218e873cfd798776a to your computer and use it in GitHub Desktop.
Restore records from child or parent
// FILTRA O USUÁRIO
$userToDelete = User::first();
//REMOVE OS PRODUTOS
$userToDelete->products()->delete();
//REMOVE O USUÁRIO
$userToDelete->delete();
//FILTRA O USUARIO DA LIXEIRA
$userToRestore = User::withTrashed()->first();
// FILTRA OS PRODUTOS DO USUÁRIO, INCLUINDO AQUELES QUE DELETAMOS
$allProductsOfUser = $userToRestore->products()->withTrashed()->get();
//FAZ A RELAÇÃO INVRERSA (BUSCA O USUÁRIO DE CADA PRODUTO DELETADO)
$allProductsIncludingTrashedAndUsers = Product::withTrashed()->with(['user' => function ($query) {
return $query->withTrashed();
}])->get();
// OPÇÃO A: RESTAURA OS PRODUTOS COM BASE NO USUÁRIO QUE FOI EXCLUIDO
//RESTAURA OS PRODUTOS E AINDA O USUARIO DE MANEIRA INVRERSA
$userToRestore->products()->withTrashed()->get()->filter(function ($product) {
return $product->trashed();
})->each(function ($product) {
$product->restore();
});
// POR FIM RESTAURA O USUÁRIO
$userToRestore->restore();
// OPÇÃO B: RESTAURA OS PRODUTOS E AINDA O USUARIO DE MANEIRA INVRERSA
$allProductsIncludingTrashedAndUsers->filter(function ($product) {
return $product->trashed();
})->each(function ($product) {
$product->user->restore();
$product->restore();
});
// RETORNA OS RESULTADOS NOVAMENTE SÓ PARA CONFIRMAR
Product::with('user')->get();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment