2014-08-29 3 views
1

Я использую Laravel-4 для создания приложения. Я стараюсь наилучшим образом использовать Eloquent ORM. В настоящее время я показываю список записей db, у которых есть все теги, связанные с ними. Справа я показываю сетку всех тегов, однако она показывает повторяющиеся теги. Я хотел бы только, чтобы показать 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

кажется, что ваш код работает много ненужные запросы. Вам нужно что-то вроде «списков», но покажите свою таблицу и какой результат вы ожидаете, чтобы получить реальный ответ. –

ответ

2

Попробуйте использовать Tag :: GroupBy («поле_формы») -> получить()

<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() -функции вы либо имеют select() в вашей цепочке, или использовать поле в качестве аргумента в вашей функции get(). Например:

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

или

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

Вы можете также использовать вместо groupBy('field'), если вы не хотите, чтобы поставить имена полей:

$tags = Tag::groupBy('field')->get(); 
Смежные вопросы