2017-05-16 4 views
1

問題が発生したので、次に何をすべきかわかりません。だから私は、カテゴリ・サブカテゴリ関係を作成し、彼らの両親の下ですべてのサブカテゴリの一覧を表示しようとしている、それは動作しますが、私がしようとしたとき、私はこのlaravel出力時にオブジェクト全体を返す

[{"id":2,"name":"dadasda","category_id":2,"created_at":"2017-05-16 09:38:49","updated_at":"2017-05-16 09:38:49"},{"id":2,"name":"djhasjkdhaskjd","category_id":2,"created_at":"2017-05-16 09:56:07","updated_at":"2017-05-16 09:56:07"}] 

を得ているように私には、サブカテゴリの名前を取得することはできませんこの

@foreach($categories as $category) 

    <div class="panel panel-info"> 
     <div class="panel-heading">{{$category->name}}</div> 
    </div> 

    <p>{{$category->subcategory}}</p> 

@endforeach 

のような出力になく、例えば、私はこの

{{$category->subcategory->name}} 

ようにそれを行うにしようと、私は

このエラーが出ます
Property [name] does not exist on this collection instance. (View: /Users/admin/Desktop/LaraProjects/cadilab/resources/views/welcome.blade.php) 

私は関係あなたが、あなたを提供するコレクションを見てみると

public function subcategory() 
{ 
    return $this->hasManyThrough(
     'App\Subcategory', 'App\Category', 
     'id', 'category_id', 'id' 
    ); 
} 
+0

どのようにデータを取得していますか – StateLess

+0

あなたはどういう意味ですか? – Nathaniel

+0

どのようにクエリを実行していますか? – StateLess

答えて

2

Categoryモデル

public function subcategory() 
{ 
    return $this->hasOne('App\Subcategory', 'category_id', 'id'); 
} 

ビュー

//if used hasOne 
$category->subcategory->name  

//if used hasMany 
foreach($category->subcategory as $subcategory) { 
    $subcategory->name 
} 
+0

でget()を使用していただきありがとうございます、これは動作しています! – Nathaniel

0

を作成するために、これを使用していますは複数のレコードを取得するので、現在、すべてのカテゴリに多数のサブカテゴリを持たせることができます。これが正しければ、余分なforeachがありません。

@foreach($categories as $category) 

    <div class="panel panel-info"> 
     <div class="panel-heading">{{$category->name}}</div> 
    </div> 

    @foreach($category as $subcategory) 

    <p>{{$subcategory->name}}</p> 

    @endforeach 

@endforeach 

PS:N + 1の問題が発生する可能性があるので、関係を熱心に読み込んでください。 https://laravel.com/docs/5.4/eloquent-relationships#eager-loading

関連する問題