Регистрация в конференции имеет 1 или более участников, связанных, и каждый участник, связанный с регистрацией, связан с типом регистрации.
У меня есть запрос, чтобы получить информацию (имя и цену) о каждом типе регистрации, связанном с участником определенной регистрации, результат запроса:
Registration {#258 ▼
...
#relations: array:1 [▼
"participants" => Collection {#262 ▼
#items: array:2 [▼
0 => Participant {#269 ▼
#fillable: array:4 [▶]
...
#relations: array:1 [▼
"registration_type" => RegistrationType {#274 ▶}
]
... // then RegistrationType has attributes: name, price, etc
}
1 => Participant {#271 ▼
#fillable: array:4 [▶]
...
#relations: array:1 [▼
"registration_type" => RegistrationType {#274 ▼
... // then RegistrationType has attributes: name, price, etc
}
]
}
]
}
]
...
}
Теперь яЯ хочу показать сводку регистрации, например:
Registration type Quantity Price Subtotal
general 1 0.00 0.00
plus 2 2.00 4.00
У меня есть код ниже, чтобы получить эту сводку, но он работает с именами статических типов регистрации (общие "и плюс). Но тип регистрации может иметьпри любом имени пользователь, создающий конференцию, может создавать регистрационные типы с любым именем. Знаете ли вы, как получить такое же резюме, но с любым именем типа регистрации, а не только со статическими значениями «общее» и «плюс»?
<ul class="list-group">
<li>
<span>Registration Type</span>
<span>Quantity</span>
<span>Price</span>
<span>Subtotal</span>
</li>
<?php
$general_type_count = 0;
$plus_type_count = 0;
foreach($registrationTypeDetails->participants as $p){
if($p->registration_type['name'] === 'general')
$general_type_count ++;
if($p->registration_type['name'] === 'plus')
$plus_type_count ++;
}
$plus = 0; $general = 0;
?>
@foreach($registrationTypeDetails->participants as $participant)
<li>
<span> {{$participant->registration_type['name']}} </span>
<span>
@if($participant->registration_type['name'] === 'general')
{{$general_type_count}}
@endif
@if($participant->registration_type['name'] === 'plus')
{{$plus_type_count}}
@endif
</span>
<?php
if ($participant->registration_type['name'] === 'general')
$general++;
if ($participant->registration_type['name'] === 'plus')
$plus++;
?>
<span class="font-size-sm">{{$participant->registration_type['price']}} </span>
<span class="font-size-sm">{{$participant->registration_type['price'] * $general_type_count}} </span>
</li>
@endforeach
</ul>
Контроллер, который возвращает «registrationTypeDetails»:
class PController extends Controller
{
public function showSummary($id = "", $slug = "", $regID)
{
$registrationDetails = Registration::with('participants:id,ticket_type_id,registration_id')->find($registrationID);
return view('conferences.showSummary', compact(registrationTypeDetails'));
}
}