2017-09-26 7 views
0

このような質問は混乱して理解しにくいかもしれませんが、できるだけ詳しく問題を説明するために最善を尽くします。Eloquent関係を確立する正しい方法

私がやっていること:特定の劇場の演劇が行われているすべての日を表示します。私が持っているもの

:(各行の関連する遊びを参照する外部キーを含む)すべての日で、これまでに行われたすべての演劇、そしてテーブルとテーブル

enter image description here

enter image description here

ここで

は、私は2つの間の関係を確立した方法は次のとおりです。

Days.phpを

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Days extends Model 
{ 
    public function play() 
    { 
     return $this->belongsTo('App\Plays', 'play_id'); 
    } 
} 

Plays.php

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Plays extends Model 
{ 
    public function days() 
    { 
     return $this->hasMany('App\Days'); 
    } 
} 

最後に、これは私がビューに関連した日を示すためにしようとしている方法です:

<ul> 
    @foreach($play->days() as $day) 
    <li class="text-center text-muted">{{ $day->day }}</li> 
    @endforeach 
</ul> 

結果I取得中:<li>タグのない順序のないリスト。まるで日がないかのように。

これまで私はEloquent関係に問題がありましたが、今回は何もエラーが表示されていないため、何が間違っているのか正確にはわかりません。 また、$ playの値をビューに渡した方法は正しいです。私はそれを参照していて、前に何度も同じファイルに値を求めています。

ご協力いただきありがとうございます。

答えて

1

クラス名を単名詞(Play、Day)に変更するか、またはhasMany関係で外部キーを指定します。 Laravelはクラス名から外部キー名を推測しようとします。この場合は、plays_idキーで日を検索しようとします。

1

関係が定義されたら、Eloquentの動的プロパティを使用して関連レコードを取得できます。 は、最終的にはループ

0

に)(代わりの$ play->日$ play->日試してみてください、それはsahedとドミトリの答えの両方の組み合わせであることが判明:

I私はそれらを使用し、これまでの場所でそれらの名前を変更するので、両方のモデルで使用するために指定された外部キーは非常に、非常に長い時間がかかったでしょう:

プレイズモデル

日モデル

public function play() 
{ 
     return $this->belongsTo('App\Plays', 'play_id'); 
} 

前には、私が唯一の日にこれをしたいが、どうやらそれは両方で行う必要があります。

また、最後のいくつかの問題を修正した括弧を削除してください、両方おねがいします!

関連する問題