Как показать информацию о регистрации в разделе #myTickets? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть страница "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, ....

1 Ответ

0 голосов
/ 26 апреля 2018
public function index() {
    $user = Auth::user();
    $registrations = $user->with('registrations.congress');

    return view('users.index', compact('user', 'registrations'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...