protected function mergeGroup(array $new, array $old)
{
$new['namespace'] = $this->formatNamespace($new, $old);
$new['prefix'] = $this->formatPrefix($new, $old);
foreach (['middleware', 'providers', 'scopes', 'before', 'after'] as $option) {
$new[$option] = $this->formatArrayBasedOption($option, $new);
}
if (isset($new['domain'])) {
unset($old['domain']);
}
if (isset($new['conditionalRequest'])) {
unset($old['conditionalRequest']);
}
if (isset($new['uses'])) {
$new['uses'] = $this->formatUses($new, $old);
}
$new['where'] = array_merge(Arr::get($old, 'where', []), Arr::get($new, 'where', []));
if (isset($old['as'])) {
$new['as'] = trim($old['as'] . '.' . Arr::get($new, 'as', ''), '.');
}
return array_merge_recursive(array_except($old, ['namespace', 'prefix', 'where', 'as']), $new);
}