Angel Rosso ANGEL ROSSO

Como eliminar a un usuario, sin eliminar sus post o comentarios en laravel

Como eliminar a un usuario, sin eliminar sus post o comentarios en laravel

- hace 7 años

A veces tenemos una tabla relacionada con otras, como por ejemplo un usuario tiene muchos post. Cuando queremos eliminarlo no queremos que se eliminen también los post de este usuario ya que sería un desastre para el posicionamiento de nuestra página.

Para evitar este problemas, laravel nos da la posibilidad de crear un campo deleted_at para marcar al usuario como eliminado por lo que no podrá acceder al panel ni nada, pero sus post quedarán. A continuación explicaré cómo se hace.

1 - En la migración de la tabla users creamos un campo deleted_at de la siguiente forma: $table->softDeletes(); y en la migración de la tabla posts le decimos que tiene una clave foránea con la tabla users pero no le decimos que se elimine en cascada. Lo hacemos de la siguiente forma $table->foreign('user_id')->references('id')->on('users'); .

2 - En el modelo User invocamos la facade use Illuminate\Database\Eloquent\SoftDeletes; 

3 - En la primera linea de la clase User hacemos uso de use SoftDeletes; 

4 - No hay que olvidar de agregar protected $dates=['deleted_at']; en el modelo User

Listo, ahora cuando queramos eliminar a un usuario no nos dará el error de que no se puede eliminar porque tiene campos referenciales a otra tabla. El usuario seguirá en la base de datos pero marcado como eliminado por concluyente, no tendremos que eliminar los posts o comentarios de ese usuario.

Espero que le haya servido a más de uno.

Saludos!


La nota habla de:

Este sitio, como la mayoría, usa cookies. Si sigues navegando entiendo que aceptas la política de cookies. | Más información