У меня есть код ниже, чтобы показать информацию обо всех регистрациях на определенном конгрессе: имя и фамилия пользователя, который сделал регистрацию, и т. Д.
Тогда есть также ссылка «Детали». При нажатии «Подробности» появляется модальное окно, в котором отображаются данные о регистрации:
- пользователь, который сделал регистрацию
- имя и фамилия каждого зарегистрированного участника (ов) в указанной клик-регистрации
Я сомневаюсь, как показать, помимо этой информации, приведенной выше, показать также вопрос (ы) и ответ (ы) на эти вопросы.
Чтобы лучше объяснить контекст вопросов: например, пользователь Джон регистрируется в конгрессе «конгресс-тест», и, например, этот конгресс имеет два типа заявок: tt1 и tt2. И у обоих типов билетов (tt1 и tt2) есть пользовательский вопрос "Какой у тебя телефон?" ассоциируется с ними. Таким образом, в регистрационной форме «конгресс-теста» эти вопросы будут отображаться для каждого выбранного билета, и Джон должен ответить на вопрос «Какой у вас телефон?» за каждый билет.
Так что в приведенном ниже коде я также хочу показать ответы на пользовательские вопросы, на которые пользователь ответил в форме регистрации, но я не понимаю, как. Знаете ли вы, что необходимо, чтобы получить ответы? Нужны ли отношения «один ко многим» между Участником и Ответом?
код, работающий без отображения ответов на пользовательские вопросы:
@foreach($congress->registrations as $registration)
<tr>
<td>{{$registration->customer->name}} {{$registration->customer->surname}}</td>
<td>...</td>
<td>
<a class="btn btn-primary showDetails"
data-regid="{{$registration->id}}">Details</a>
</td>
</tr>
<div class="modal fade" id="registrationDetails-{{ $registration->id }}" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-body">
<dl>
<dt>Name</dt>
<dd>{{ $registration->customer->name }}</dd>
<dt>Email</dt>
<dd>{{ $registration->customer->email }}</dd>
</dl>
@foreach ($registration->participants as $participant)
<dl>
<dt>Name</dt>
<dd>{{ $participant->name }}</dd>
<dt>Surname</dt>
<dd>{{ $participant->surname }}</dd>
<dt>Ticket Type</dt>
<dd>{{ $participant->registration_type->name }}</dd>
<!-- Doubt -->
<dt>Doubt: How to get the
custom question(s)? (ex: Whats your phone?)</dt>
<dd> Doubt: how to get the answer?</dd>
</dl>
@endforeach
</div>
</div>
@endforeach
Контекстная диаграмма:
Модели Laravel:
class Congress extends Model
{
// A congress has one creator
public function creator(){
return $this->belongsTo('App\User', 'user_id');
}
public function ticketTypes(){
return $this->hasMany('App\TicketType', 'congress_id');
}
public function registrations(){
return $this->hasMany('App\Registration', 'congress_id');
}
}
// User model
class User extends Authenticatable
{
public function congresses(){
return $this->hasMany('App\Congresss', 'user_id');
}
// A user can register in many congresses
public function registrations(){
return $this->hasMany('App\Registration','main_participant_id');
}
}
// Registration model
class Registration extends Model
{
// a registration has one user that do the registration
public function customer(){
return $this->belongsTo('App\User');
}
// a registration can have many participants
public function participants(){
return $this->hasMany('App\Participant');
}
public function congress(){
return $this->belongsTo('App\Congress');
}
}
// Participant Model
class Participant extends Model
{
// a participant belongs to a registration
public function registration(){
return $this->belongsTo('App\Registration');
}
public function ticket_type(){
return $this->belongsTo('App\TicketType');
}
}
// Ticket Type model
class TicketType extends Model
{
public function congress(){
return $this->belongsTo('App\Congress');
}
public function questions(){
return $this->belongsToMany('App\Question', 'ticket_type_questions')->withPivot(['required']);;
}
// a registration can have many participants
public function participants(){
return $this->hasMany('App\Participant');
}
}
// Question model
class Question extends Model
{
public function ticket_type(){
return $this->belongsToMany('App\TicketType', 'ticket_type_questions')
->withPivot('required');
}
}
// Answer model
class Answer extends Model
{
public function question(){
return $this->belongsTo('Question');
}
public function participant(){
return $this->belongsTo('Participant');
}
}
// TicketTypeQuestion model
class TicketTypeQuestion extends Model
{
}
DB: