2016-07-03 14 views
1

を表示するには、モデルによってリンク雄弁。私はAreaモデルとSubareaモデルを持っています。エリアには多くのサブエリアがあり、サブエリアはエリアに属しています。私は、モデルをリンクして(正しい用語が不明)、1つの領域のすべてのサブ領域を見つけようとしています。Laravelはこれが初心者質問ですデータ

これらは私のモデルです。コントローラで

class Area extends Model 
{ 
    public function subarea() 
    { 
     return $this->hasMany(Subarea::class); 
    } 
} 

class Subarea extends Model 
{ 
    public function area() { 
     return $this->belongsTo(Area::class); 
    } 
} 

、私は

、私は次のことを行うことができるよ、とそれが動作レールで

@foreach($areas->subareas as $subarea) 
    {{ $subarea->subarea_name }} 
@endforeach 

、ビューで

public function index() 
{ 
    $areas = Area::all(); 

    return view('area.area', compact('areas')); 
} 

をしています

<% areas.subareas.each do |subarea| %> 
    <tr> 
     <td><%= subarea.subarea_name %></td> 
    </tr> 
<% end %> 

は私が間違ってやっていると指摘することができ、誰です ここに?ボーナスの質問なども

、。すべての領域を取得し、それをビューに渡すのに適した場所はありますか?私は悪い習慣であることを知っているモデルでクエリを持っています。誰かが私が代わりにどこに置くべきか知っていますか?

ありがとうございます!

更新

これは私が

を取得していますエラーです

未定義のプロパティ:\データベースを照らす\雄弁\コレクション:: $サブエリア

答えて

1

は、tryはにループに変更します

をパフォーマンスを向上させるため
@foreach($areas as $area) 
    //subarea singular (the relation name) 
    @foreach($area->subarea as $subarea) 
     {{ $subarea->subarea_name }} 
    @endforeach 
@endforeach 

、次のことを行う必要があり熱心な負荷subareas

$areas = Area::with('subarea')->get(); 
+0

こんにちは、コメントありがとうございます。あなたが提案したとおりに変更され、上記のエラーが発生しています。 – Aptorian

+0

リクエストも変更しましたか? '$ area = Area :: with( 'subarea') - > get();' –

+0

私はして、エラーメッセージは同じです。奇妙な... – Aptorian