Laravel — Adicionando Soft Deletes em uma tabela existente.
- Erick Giorgio
- 31 Dec 2022

Excluindo modelos
Para excluir um modelo, chame o delete método em uma instância de modelo:
$user = App\User::find(1);
$user->delete();
Ao inves de realmente remover registros de seu banco de dados, o Eloquent também pode “excluir” modelos. Com o SoftDelete, quando os modelos são excluídos, eles não são realmente removidos do banco de dados. Em vez disso, um deleted_atatributo é definido no modelo e inserido no banco de dados. Se um modelo tiver um deleted_atvalor não nulo , o modelo foi excluído por software. Para habilitar exclusões suaves para um modelo, use o traço no modelo: Illuminate\Database\Eloquent\SoftDeletes
Adicionar Soft Deletes
Para adicionar o SoftDelete a uma tabela/modelo já existente.Primeiro, ative no seu modelo. Vou usar a users mesa como exemplo.
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model {
use SoftDeletes;
protected $dates = ['deleted_at'];
}
Em seguida, crie uma nova migração para modificar a tabela existente.
$ php artisan make:migration add_soft_deletes_to_user_table --table="users"}
Abra o arquivo de migração recém-criado e adicione o softDeletes método.
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddSoftDeletesToUserTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function(Blueprint $table)
{
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function(Blueprint $table)
{
$table->dropSoftDeletes();
});
}
}
Agora rode o migration.
php artisan migrate
Agora você deve ver a
deleted_at
coluna timestamp no seu banco de dados.
E quando fizer.
$user->delete();
a coluna será preenchido