2017-06-06 109 views
0

我在我的模型兩個表: - 組(ID,姓名,CATEGORY_ID) - 分類(ID,姓名)Laravel 5.4一對多的關係

我需要在我看來,一個列表顯示每個組名稱及其對應的類別。你能告訴我如何填充Eloquent方法,以及在視圖方面我需要什麼?

這是我迄今爲止,但當然不工作

- GroupController

`  public function index() 
{ 
    $groups = Category::find(1); 

    return view('groups.groups',compact('groups')); 
} 

- 集團
public function category() { return $this->belongsTo('App\Category'); }

- CategoryController

`  public function groups() 
{ 
    return $this->hasMany('App\Group'); 
}` 

- 凱特血淋淋的

`  public function groups() 
{ 
    return $this->hasMany('App\Group'); 
}` 

- 視圖

@foreach($groups as $group) {{$group->category}} {{$group->category->name}} @endforeach

謝謝!

+0

難道你在模型中定義關係? https://laravel.com/docs/5。4 /雄辯關係 – Robert

+0

是的,我只編輯了答案並在兩個控制器中添加了關係。 – simo93

+0

您應該在模型中創建關係,而不是在控制器中創建關係。 – Robert

回答

0

一個簡單的方法是用雄辯的預先加載: https://laravel.com/docs/4.2/eloquent#querying-relations

Group::with('category')->get() 

例如:

 # Loop through all groups 
     foreach(Group::with('category')->get() as $group){ 
     #get group name 
     print $group->name; 

     #get all categories related to this group 
     $categories = $group->category; 
     foreach ($categories as $category){ 
      print $category->name; 
     } 
     print "<br>"; 
    } 
0

我終於得到它。 在GroupsController加入這個

´ 
    $groups = Group::with('category')->get(); 

    return view('groups.groups',compact('groups')); 

' 並在視圖: @foreach($groups as $group) {{$group->category->name}}

感謝您的幫助

0

對我的意見的後續行動,你想要的是以下幾點:

模型+關係:

組模型

public function category() 
{ 
    return $this->belongsTo(Category::class); 
} 

分類模型

public function groups() 
{ 
    return $this->hasMany(Group::class); 
} 

然後在您的組控制器:

public function index() 
{ 
    // consider using paginate() instead of get() 
    // using with('category') to eagerload the category (1 extra query) instead of querying for the category in the views foreach loop. 
    $groups = Group::with('category')->get(); 

    return view('groups.groups',compact('groups')); 
} 

而且在你看來,你現在可以列出組及其類別:

@foreach ($groups as $group) 
    {{-- Assuming group and category have a name and category is always set --}} 
    {{ $group->name }} : {{ $group->category->name }} 
@endforeach 
+0

感謝羅伯特你是最好的:) – simo93