以正确的方式将数据从多个表传递到laravel视图

时间:2014-05-09 17:54:23

标签: php laravel laravel-4

我是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:我阅读了有关视图作曲家的在线文档,这似乎是一个公平的替代方案,但它对我的知识水平来说非常复杂,它假定了许多我不知道该怎么做的事情。

先谢谢你们,感谢你的帮助。

0 个答案:

没有答案