2016-09-27 19 views
1

この問題を解決するために時間を費やした後、私はあなたに助けを求めます。Laravelの関係メソッドが動作しない

私は、次の構造を有する:

モデル: Student.php

class Student extends Model 
{ 
    protected $table = 'studenten'; 

    public function kurs() { 
     return $this->belongsTo(Kurs::class); 
    } 
} 

モデル: Kurs.php

class Kurs extends Model 
{ 
    protected $table = 'kurse'; 

    public function studenten() { 
     return $this->hasMany(Student::class); 
    } 
} 

コントローラー: KursController.php

class KursController extends Controller 
{ 
    public function showStudenten() { 
     return view('example.studenten', [ 
      'kurse' => Kurs::all(), 
     ]); 
    } 
} 

ビュー:例の\ studenten.blade.php

@foreach($kurse as $kurs) 
    <p>{{ $kurs->title }}, {{ $kurs->id }}</p> 
    @foreach($kurs->studenten() as $student)) 
     <p>{{ $student->name }}</p> 
    @endforeach 
@endforeach 

表:アルグリム

id | title | created_at | updated at 

表: studenten

id | name | kurs_id | created_at | updated_at 

私はすべてのコースに所属する生徒を出力しようとしています。私のエラーはどこですか?自分のモデルのメソッドで外部キー'kurs_id'を指定しようとしましたが、動作しません。 私の間違いを見つけるのを手伝ってもらえますか?

ありがとうございます。

+0

あなたのコントローラでは、この

を試してみてください? – Squazz

+0

エラーは表示されますが、「Kurse」が表示されても何も表示されません – Johannes

答えて

3

は、あなたがどのようなエラーを取得している

public function showStudenten() { 
    return view('example.studenten', [ 
     'kurse' => Kurs::with('studenten')->get(), 
    ]); 
} 
ビューファイルで

@foreach($kurse as $kurs) 
<p>{{ $kurs->title }}, {{ $kurs->id }}</p> 
    @foreach($kurs->studenten as $student)) 
    <p>{{ $student->name }}</p> 
    @endforeach 
@endforeach 
+0

これを以前に試してみましたが効果がありません。どうもありがとうございました!なぜ私はここに必要がないのか説明できますか? – Johannes

+1

@Johannes - 'studenten'は配列ではありません – Derek

+1

これは配列のオブジェクトを返します.Laravelの雄弁な関数では、()を使う必要はありません。それはオブジェクトを返す – Vikash

関連する問題