2014-08-29 51 views
1

我使用Laravel-4来构建应用程序。我试图充分利用Eloquent ORM。目前,我正在显示一个数据库条目列表,其中包含多个与之相关的标签 右侧显示所有标签的网格,但显示的是重复标签。我只想表明unique标签使用Eloquent Laravel检索数据库唯一条目4

这是我的代码:

<div class="tags-panel"> 
     <div class="tags-title"><h1>Tags</h1></div> 
     <div class="tags-cloud"> 
      @foreach(Tag::distinct()->get() as $tag) 
       <a href="#" class="tag"><span class="num"> {{ Tag::getAmount($tag->id) }} </span> {{$tag->name}} </a> 
      @endforeach 
     </div> 
    </div> 

是否Eloquent提供的只是从数据库中检索distinct项的方法吗?

+0

看来你的代码运行了很多不必要的查询你可能需要像'lists'这样的东西,但是要显示你的表格和你期望得到的结果,才能得到真正的答案。 – 2014-08-29 18:05:28

回答

2

尝试使用标签:: GROUPBY( 'FIELD_NAME') - > get()方法

<div class="tags-panel"> 
    <div class="tags-title"><h1>Tags</h1></div> 
     <div class="tags-cloud"> 
      @foreach(Tag::groupBy('field_name')->get() as $tag) 
       <a href="#" class="tag"><span class="num"> {{ Tag::getAmount($tag->id) }} </span> {{$tag->name}} </a> 
      @endforeach 
     </div> 
    </div> 
0

要使用distinct() -function你或者你的链有一个select(),或使用字段作为参数在你的get()-功能。例如:

$tags = Tag::distinct()->get(array('field')); 

$tags = Tag::select('field')->distinct()->get(); 

你也可以改用groupBy('field')如果你不想提供的字段名称:

$tags = Tag::groupBy('field')->get(); 
相关问题