Laravel — Adicionando Soft Deletes em uma tabela existente.

Image Laravel — Adicionando Soft Deletes em uma tabela existente.

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