Laravel Deletable is a package to handle deletion restrictions to your Eloquent models gracefully. The package provides a RestrictsDeletion
trait for models you’d like to control deletion:
namespace App;
use F9Web\LaravelDeletable\Traits\RestrictsDeletion;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use RestrictsDeletion;
public function isDeletable(): bool
{
return $this->orders->isEmpty();
}
}
When a model’s isDeletable()
method returns false
, a model exception occurs:
namespace App\Controllers;
use F9Web\LaravelDeletable\Exceptions\NoneDeletableModel;
use App\User;
class UsersController
{
public function destroy(User $user): bool
{
try {
$user->delete();
} catch (NoneDeletableModel $e) {
dd($e->getMessage());
}
}
}
You can learn more about this package, get full installation instructions, and view the source code on GitHub at f9webltd/laravel-deletable.
Filed in:
Full stack web developer. Author of Lumen Programming Guide and Docker for PHP Developers.