To soft delete relations, you have to do it using model observers
So if company is soft deleted, the 'deleting' event in the company model is hooked to also soft delete the domain(s) associated with company, and then in the Domain model, hook the deleting event so that projects are soft deleted, and so on down the chain of relations.
This is from L5.2; where CampaignEvent has Shifts and Shifts has Activities
CampaignEvent.php;
//observe this model being deleted and delete the child shifts
public static function boot ()
{
parent::boot();
self::deleting(function (CampaignEvent $event) {
foreach ($event->shifts as $shift)
{
$shift->delete();
}
});
}
Shift.php
//observe this model being deleted and delete the child activities
public static function boot ()
{
parent::boot();
self::deleting(function (Shift $shift) {
foreach ($shift->activities as $activity)
{
$activity->delete();
}
});
}