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