2013-09-26 3 views
0

У меня есть таблица в моей базе данных с полями «Категория» и «Заголовок». У меня есть несколько записей с той же категорией, но с другими названиями. То, что я хотел бы сделать, - напечатать категорию один раз на моей странице, а затем показать все названия с той же категорией. Так что-то вроде этого:Сортировка результатов базы данных по категориям

Category 1 
Title 3(=newest) 
Title 2 
Title 1(=olddest) 

Category 2 
Title 1 

Category 3 
Title 3(=newest) 
Title 2 
Title 1(=olddest) 

Im используя структуру Laravel 4 с красноречивыми. Поэтому я возвращаю результат как объект JSON.

То, что я на данный момент:

вид

@foreach($photos as $photo) 

    {{$photo->Category}} 

    @foreach($photo as $category) 
     {{ $photo->Title }} 
    @endforeach 

@endforeach 

контроллер

$photos = Photo::orderBy('Date')->get(); // Sort by so that newest photos come first per category 
return View::make('myView')->with('photos', $photos); 

Глядя немного дальше, я пришел к array_add helper, но я не конечно, если я могу использовать его и как я действительно должен его использовать.

Может ли кто-нибудь помочь мне достичь результата, который мне нужен?

ответ

1

Вы можете сделать что-то вроде:

$photos = Photo::orderBy('category')->orderBy('created_at', 'desc')->get(); 
return View::make('myView')->with('photos', $photos); 

Тогда

<?php $category = ''; ?> 
@foreach($photos as $photo) 

    @if($category != $photo->Category) 
     {{$photo->Category}} 
     <?php $category = $photo->Category; ?> 
    @endif 

    {{ $photo->Title }} 

@endforeach 
+0

Я не могу сделать это, потому что потом мне придется сортировать по дате. Позднее фотографии будут отправлены по дате. – mXX

+0

Итак, вы должны точно показать, что вам нужно делать. –

+0

Вы правы, я изменил исходный вопрос. Надеюсь, вы по-прежнему можете мне помочь с этим – mXX

Смежные вопросы