Como usar a união e a interseção na consulta de Laravel
$queryWithParent = SaleService::query()
->select(\DB::raw('DISTINCT ON (properties.parent_id) sale_services.*'))
->from('sale_services')
->join('properties', 'sale_services.property_id', '=', 'properties.id')
->whereNotNull('properties.parent_id')
->orderBy('properties.parent_id')
->orderBy('sale_services.index_range', 'desc');
$queryWithoutParent = SaleService::query()
->select(\DB::raw('sale_services.*'))
->join('properties', 'sale_services.property_id', '=', 'properties.id')
->whereNull('properties.parent_id');
$query = $queryWithParent->union($queryWithoutParent);
Anxious Anteater