I needed this in a project and what I did was to perform a search before performing the soft-delete. In my case it was quiet because only 2 tables were related to the one being manipulated.
To work with a context where you can have n-related tables, and sometimes tables of plugins or modules that may or may not be active, you can create a class derived from the idea of the observable pattern.
Create this class with an array of templates that should be queried when soft-delete is run. Each template must be inserted into this class when instantiated / read.
One way that the template is inserted, in Laravel, is to create a register and at the time of registration perform the insertion.
I'm sorry to not pass example code because I will not have to do so at the moment, I hope the idea helps, because Laravel does not have it as default.