2013-12-05 4 views
2

У меня есть даты в календаре, и я обращаюсь к ним ниже, у них есть отношение категории с таблицей категорий и связь с таблицей CalEvent.Сортировка коллекции в Laravel 4

$cal_dates = CalDate::whereBetween('date', array($from, $to)) 
       ->orderBy('date') 
       ->orderBY('start') 
       ->get(); 

Это возвращает список, отсортированный по дате начала в диапазоне. Все хорошее до сих пор, и возвращаемая строка выглядит следующим образом: я могу получить доступ к категории и CalEvent, т. Е. $cal_date->CalEvent->description.

{ 
"id":"406", 
"cal_event_id":"77", 
"start":"00:00:00", 
"finish":"00:00:00", 
"date":"2014-04-06", 
"created_by":"0", 
"updated_by":"0", 
"created_at":"2013-09-21 04:43:25", 
"updated_at":"2013-09-21 04:43:25" 
} 

Что мне нужно это объект, как показано ниже на мой взгляд, с отношением к Category и Cal_Dates таблице интактным:

cal_dates 
    '12th Feb 2014' 
     'Array of dates related to category 1 for 12th Feb' 
     'Array of all other dates not related to category 1 for 12th Feb' 
    '13th Feb 2014' 
     'Array of dates related to category 1 for 13th Feb' 
     'Array of all other dates not related to category 1 for 13th Feb' 
    ... 

Любого совет высоко ценится ...

+0

Привет, что '12 февраля 2014'? created_at, updated_at? – Anam

+0

Это столбец в CalDate -, т. Е. $ Cal_date-> date = 2014-04-06 – Staple

ответ

3

Попробуйте это:

$cal_dates = $cal_dates->sortBy(function($cal_date) 
{ 
    return $cal_date->date; 
}); 

или изменить запрос:

$cal_dates = CalDate::with('category') 
       ->whereBetween('date', array($from, $to)) 
       ->orderBy('date') 
       ->orderBY('start') 
       ->get(); 

Затем на ваш взгляд, вы можете получить доступ к отношения как следующее:

@foreach($cal_dates as $cal_date) 

    <li> {{ $cal_date->date }} </li> 
    <!-- category data --> 
    <li> {{ $cal_date->category->something }} 

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