Ключами спокойно можно удалять по связям, а вот файлы - почитайте в документации https://laravel.com/docs/5.5/eloquent#observers это о событиях в моделях. Создайте наблюдателя, и в нем опишите удаление в файлов.
А что мешает сделать методы у модели для проверки с нужным именем метода, который будет говорить что именно проверяет, тогда не нужно будет такие длинные вещи писать?