我是Laravel的新手,这是我使用的第一个框架,到目前为止我很喜欢它。我有一个关于如何从多个表传递数据到视图的问题。
我正在一个有着装备模特的时尚应用程序。该服装可以属于一个或多个品牌,一种或多种时尚风格,以及一个或多个商店。我使用Laravel定义了关系,我得出了以下模型:
装备型号:
protected $table = 'outfits';
[...]
public function brands(){
return $this->belongsToMany('Brand','outfit_brands','outfit_id','brand_id');
}
public function styles(){
return $this->belongsToMany('Style','outfit_styles','outfit_id','style_id');
}
public function stores(){
return $this->belongsToMany('Store','outfit_stores','outfit_id','store_id');
}
[...]
现在我可以转到我的Outfit控制器并将数据传递到视图中:
$outfits = Outfit::all();
foreach($outfits as $item){
$id = $item->id;
$item->mybrands = Outfit::find($id)->brands->lists('name');
$item->mystyles = Outfit::find($id)->styles->lists('name');
$item->mystores = Outfit::find($id)->stores->lists('name');
}
return View::make('outfits.index', compact('outfits'));
在视图中,我通过这样做得到所有数据:
[...]
@foreach ($outfits as $item)
[...]
<td>{{ $item->name }}</td>
<td>{{ $item->description }}</td>
[...]
<td>{{ HTML::ul($item->mybrands, array('class'=>'list-unstyled')); }}</td>
<td>{{ HTML::ul($item->mystyles, array('class'=>'list-unstyled')); }}</td>
<td>{{ HTML::ul($item->mystores, array('class'=>'list-unstyled')); }}</td>
[...]
@endforeach
这很好用,但我不确定这是将数据传递给视图的正确方法还是最佳方式。我想从一开始就做好事,所以我在这里和你们一起检查一下正确实现相同结果的正确方法。
PS:我阅读了有关视图作曲家的在线文档,这似乎是一个公平的替代方案,但它对我的知识水平来说非常复杂,它假定了许多我不知道该怎么做的事情。先谢谢你们,感谢你的帮助。