2017-06-06 82 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