2017-05-16 51 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

分類模型

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

謝謝,這是工作! – 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

相關問題