実現したいこと
エラーを解決する
前提
ここに質問の内容を詳しく書いてください。
phpでBodyPartを選択したらそれに対応するトレーニングメニューをselectに表示させて選択できる機能を作ろうとしています。
発生している問題・エラーメッセージ
Undefined variable $BodyParts
該当のソースコード
php
1<form>2 <select name="TrainingMenu" method="post">3 <option value="">ボディパーツを選択してください</option>4 @foreach ($BodyParts as $BodyPart)5 <option value="{{ $BodyPart->id }}"></option>6 @endforeach7 </select>
モデルコード
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class BodyPart extends Model { use HasFactory; protected $fillable = ['name', 'body_part_id']; public function trainings() { return $this->hasMeny(Training::class); } public function getTrainingMenuOptions() { $BodyParts = BodyPart::all(); if (isset($bodyPartId)) { return $this->where('body_part_id', $bodyPartId)->get()->pluck('name', 'id'); } else { return collect(); } return $BodyParts->pluck('name', 'id'); } }
シーダーファイル
<?php namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; class BodyPartSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $bodyParts = [ ['name' => '胸筋'], ['name' => '背筋'], ['name' => '肩'], ['name' => '腕'], ['name' => '腹筋'], ['name' => 'お尻'], ['name' => '脚'], ]; foreach ($bodyParts as $bodyPart) { $bodyPart = new BodyPart(); $bodyPart->name =$bodyPart['name']; $bodyPart->save(); } } }
試したこと
・Body Partモデルクラスのテーブルにレコードが存在するか
・gettrainingMenuOptions()メソッドを呼び出しているコードがBodyPartモデルの外部に記述されていないか
・$bodyPartId変数がボディパーツIDに設定されているか
・scriptの追加
・コントローラーを消してみる
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
0 コメント