Undefined variable $playersエラー

実現したいこと

データベースからブラウザー上に選手一覧表示させる

発生している問題・分からないこと

イメージ説明

エラーメッセージ

error

1Undefined variable $players

該当のソースコード

PHP(Model)

1<?php2 3namespace App\Models;4 5use Illuminate\Database\Eloquent\Factories\HasFactory;6use Illuminate\Database\Eloquent\Model;7 8class Player extends Model9{10 use HasFactory;11 12 protected $table = 'players'; // モデルが操作するテーブル名を明示的に指定13 14 public function allPlayer()15 {16 return $this->select([17 'p.id',18 'p.country_id',19 'p.uniform_num',20 'p.position',21 'p.name',22 'p.club',23 'p.birth',24 'p.height',25 'p.weight',26 'c.id as country_id',27 'c.name as country_name',28 'c.ranking',29 'c.group_name',30 ])31 ->from('players as p')32 ->join('countries as c', 'p.country_id', '=', 'c.id')33 ->paginate(20);34 }35}

PHP(Controller)

1<?php2 3namespace App\Http\Controllers;4 5use Illuminate\Http\Request;6use App\Models\Player;7 8class PlayerController extends Controller9{10 protected $player;11 12 public function __construct(Player $player)13 {14 $this->player = $player;15 }16 17 // 選手一覧画面を表示18 public function index()19 {20 // ここで最初のチェックポイント21 dd('Reached step 1');22 $players = $this->player->allPlayer();23 dd('Reached step 2', $players);24 return view('players.index', compact('players'));25 }26 27 // 選手詳細を表示28 public function detail($id)29 {30 $player = $this->player->find($id);31 return view('players.detail', compact('player'));32 }33}

PHP

1<!DOCTYPE HTML>2<html lang="ja">3 4<head>5 <meta charset="UTF-8">6 <title>選手一覧</title>7 <link rel="stylesheet" type="text/css" href="{{ asset('css/style.css') }}">8 <!-- CSSファイルのリンクを追加 -->9 10 <style>11 /* ここに直接CSSスタイルを追加することもできます */12 /* 例: テーブルのスタイル */13 #players {14 width: 100%;15 border-collapse: collapse;16 }17 18 #players th, #players td {19 border: 1px solid #ddd;20 padding: 8px;21 text-align: center;22 }23 24 #players th {25 background-color: #f2f2f2;26 }27 28 #players tr:nth-child(even) {29 background-color: #f2f2f2;30 }31 </style>32</head>33 34<body>35 <h1>選手一覧画面</h1>36 <h2>■選手データ</h2>37 <div id="playerlist">38 <table id="players">39 <tr>40 <th>No</th>41 <th>背番号</th>42 <th>ポジション</th>43 <th>所属</th>44 <th>名前</th>45 <th></th>46 <th>誕生日</th>47 <th>身長</th>48 <th>体重</th>49 <th></th>50 </tr>51 @foreach($players as $player)52 <tr>53 <td>{{ $player->id }}</td>54 <td>{{ $player->uniform_num }}</td>55 <td>{{ $player->position }}</td>56 <td>{{ $player->club }}</td>57 <td>{{ $player->name }}</td>58 <td>{{ $player->country_name }}</td>59 <td>{{ $player->birth }}</td>60 <td>{{ $player->height }}</td>61 <td>{{ $player->weight }}</td>62 <td><a href="/player/{{ $player->id }}"><button>詳細</button></a></td>63 </tr>64 @endforeach65 </table>66 </div>67 {{ $players->appends(request()->query())->links() }}68</body>69 70</html>

PHP(web)

1<?php2 3use App\Http\Controllers\PlayerController;4use Illuminate\Support\Facades\Route;5 6Route::get('/', [PlayerController::class, 'index'])->name('players');7 8Route::get('/player/{id}', [PlayerController::class, 'detail'])->name('show');

試したこと・調べたこと

上記の詳細・結果

return view('players.index', compact('players'));にcompactをを追加したりコントローラーにdd(players)を記述して$playersの中を確認してみたみたのですが未定義エラーが出たままです

補足

特になし

コメントを投稿

0 コメント