Last active
August 17, 2018 05:44
-
-
Save jobcerto/b5e291a2d10e2c0218e873cfd798776a to your computer and use it in GitHub Desktop.
Restore records from child or parent
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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