/** * Get Ad fields. * * @param Ad $ad * * @return Collection */ function getAdFields($ad) { $mergedFields = []; if (!$ad->has('fields')) { return []; } $fields = $ad->fields()->orderBy('is_price', 'desc')->with('select')->whereIsInAd(true)->get(); foreach ($fields as $field) { $value = $field->type != 5 ? $field->pivot->value : $field->pivot->string; if (isset($mergedFields[$field->id])) { $oldValue = $mergedFields[$field->id]; $mergedFields[$field->id] = is_array($oldValue) ? array_merge($oldValue, [$value]) : [$oldValue, $value]; } else { $mergedFields[$field->id] = $value; } } return collect($mergedFields); }