У меня есть страница "http://proj.test/user/profile?user=1", где пользователь может редактировать материалы, связанные с его учетной записью. Маршрут для этой страницы:
Route::get('/user/profile', [
'uses' => 'UserController@index',
'as' =>'user.index'
]);
В методе индекса UserController простовернул вид:
public function index(){
return view('users.index')->with('user', Auth::user());
}
На этой странице (http://proj.test/user/profile?user=1) есть несколько вкладок для редактирования / управления различными аспектами учетной записи пользователя (Общая информация, Информация для входа, Мои билеты).
Сомнение:
Я сомневаюсь, что на вкладке "#myTickets" я хочу показать регистрации, которые есть у пользователя. Поэтому я создал метод в UserController, как показано ниже.Я сомневаюсь, как правильно вызвать этот метод для отображения этой информации при нажатии на вкладку «Мои билеты», как это можно обрабатывать с точки зрения маршрутов, потому что метод getRegistrations не используется.
public function getRegistrations(){
$user = Auth::user();
$registrations = User::find($user->id)->registrations;
dd($registrations);
return view('users.index')->with('registrations', $registrations);
}
// ссылки вкладок
<ul class="nav nav-pills bg-light-gray account_options" role="tablist">
<li class="">
<a class="nav-link active" href="#generalInfo" data-toggle="tab" role="tab">
<i class="fa fa-user" aria-hidden="true"></i> <span class="d-none d-lg-inline-block">General Info</span></a>
</li>
<li class="disabled">
<a class="nav-link" href="#myTickets" data-toggle="tab" role="tab">>MyTickets</span></a>
</li>
...
</ul>
Тогда вкладки выглядят следующим образом:
<div class="tab-content bg-white" id="myTabContent">
<div class="tab-pane fade show active clearfix" id="generalInfo" role="tabpanel" aria-labelledby="home-tab">
<form method="post" action="{{route('user.updateGeneralInfo')}}" class="clearfix">
{{csrf_field()}}
...
</form>
</div>
<div class="tab-pane clearfix fade" id="myTickets" role="tabpanel" aria-labelledby="contact-tab">
...
@foreach($registration as $reg)
<ul>
<li>here is to show congress title</li>
<li>here is to show congress date</li>
<li>here is to show registration date</li>
...
</ul>
@endforeach
</div>
</div>
Соответствующие модели для вопроса:
// Congress model
class Congress extends Model
{
// A conference has many registration types
public function ticketTypes(){
return $this->hasMany('App\TicketType', 'congress_id');
}
public function registrations(){
return $this->hasMany('App\Registration', 'congress_id');
}
}
// RegistrationModel
class Registration extends Model
{
// a registration has one user that do the registration (main_participant_id)
public function customer(){
return $this->belongsTo('App\User');
}
public function congress(){
return $this->belongsTo('App\Congress');
}
}
// TicketTypeModel
class TicketType extends Model
{
public function congress(){
return $this->belongsTo('App\Congress');
}
}
// user model
class User extends Authenticatable
{
// A user can register in many conferences
public function registrations(){
return $this->hasMany('App\Registration','main_user_id');
}
}
Структура таблиц:
registrations table: id, status, congress_id, created_at
congresses table: id, name, created_at,...
ticket type table:id, name, congres_id, created_at, ....