Я хочу показать всех игроков соответствующего клуба и иметь некоторые проблемы в таблице в Laravel

У меня есть таблица клубов с полем:

id,name,est_date,CEO ....

у меня есть стол игроков с полем:

id, name,DOB,height,weight, .....

Таблица истории игрока:

id,player_id,previous_club_id,current_club_id,position, ......

таблица истории клуба:

club_id, championship_id,status, ...

На странице просмотра club_histories я могу показать:

club name,championship name and status...

но я хочу показать соответствующего игрока клуба тоже в таблице club_histories … как это возможно ???
ответьте, пожалуйста…

Отредактированная часть: добавлен код

routes.php:

Route::resource('clubhistories','ClubHistoryController');

ClubHistoryController.php:

public function show($id,ClubHistory $clubhistories)
{
$club=$clubhistories->find($id);

$clubhistories=$clubhistories->getPlayerByCLub();
return view('pages.singleClub',compact('club','clubhistories'));
}

ClubHistoryRepository.php

  public function getPlayerByCLub(){
return $this->makeModel() ->join('clubs', 'clubs.id', '=', 'club_histories.club_id')
->join('player_histories','player_histories.current_club_id', '=', 'clubs.id')
->join('players', 'players.id', '=', 'player_histories.player_id')
->get([
'clubs.name',
'player_histories.player_id',
'players.name',
]);
}

SingleClub.blade.php:

 <div class="tab-content">
<div class="tab-pane in active" id="basic">

<table class="table table-condensed">
<thead>
<tr>
<th>Name</th>
<th>contact</th>
</tr>
</thead>
<tbody>
<tr>
<td>Name:</td>
<td>{!!$club->club->name!!}</td>

</tr>
<tr>
<td>Contact:</td>
<td>{!!$club->club->contact_no!!}</td>
</tr>
</tbody>
</table>
</div>
<div class="tab-pane fade" id="players">
<table class="table table-condensed">
<thead>
<tr>
<th>Player name</th>
<th>Position</th>
</tr>
</thead>
<tbody>

@foreach($clubhistories as $clubhistories)
<tr>

<td> {!! $clubhistories->name!!}   </td>
<td>   {!! $clubhistories->position!!} </td>

</tr>
@endforeach
</tbody>
</table>
</div>

Вышеуказанное объединение используется, и решение, которое вы дали, дает то же самое решение. Я хочу передать один и тот же идентификатор, найденный по истории клубов в объекте клуба, в объект клубной истории, так что будет показан весь игрок клуба.
не могли бы вы мне помочь..

0

Решение

Вы можете видеть игроков в club_histories либо через объединения (меньше запросов), либо через отношения Eloquent (более простой код).

С помощью Красноречивые Отношения (при условии, что вы их настроили):

$histories = ClubHistory::with('players', 'club')->get();

// In your blade view
@foreach ($histories as $history)
<p>{{ $history->club->name }} won {{ $history->championship_name }}</p>
<p>Status: {{ $history->status }}
<div>Player list:
<ul>
foreach ($history->players as $player)
<li>{{ $player->name }}</li>
@endforeach
</ul>
</div>
@endforeach

Присоединяется к построителю запросов:

DB::table('club_histories')
->join('player_histories',
'player_histories.current_club_id', '=', 'club_histories.club_id')
->join('players', 'players.id', '=', 'player_histories.player_id')
->join('club', 'club.id', '=', 'club_histories.club_id')
->get([
'club.name AS clubName',
'club_histories.championship_name',
'club_histories.status',
'player_histories.player_id',
'players.name AS playerName',
]);

Обратите внимание, что приведенное выше вернет одну строку на игрока за историю клуба

РЕДАКТИРОВАТЬ:

После просмотра вашего кода, вот версия выше, которая должна работать с вашей нестандартной кодовой базой. Обязательно передайте удостоверение личности getPlayerByClub($id),

ClubHistoryRepository.php

public function getPlayerByCLub($clubHistoryId) {
return $this->makeModel()
->join('clubs', 'clubs.id', '=', 'club_histories.club_id')
->join('player_histories', 'player_histories.current_club_id', '=', 'clubs.id')
->join('players', 'players.id', '=', 'player_histories.player_id')
->where('club_histories.id', '=', $clubHistoryId)
->get([
'clubs.id',
'club_histories.championship_name',
'club_histories.status',
'player_histories.player_id',
'clubs.name',
'players.name',
]);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]