У меня была таблица с именем, negeri и годом начала и окончания обслуживания. Я хочу получить количество лет, в течение которых человек находился в штате:
ID | Name | State | yearstart | yearend
-----------------------------------------------------------
1 | Tom | Kedah | 2001 | 2002
1 | Tom | Kedah | 2003 | 2007
2 | Anne | Melaka | 2008 | 2012
2 | Anne | Melaka | 2013 | 2018
3 | Bill | KL | 2000 | 2001
Я уже пробовал. но он только подсчитывает количество лет и перечисляет всех людей (с повторением имени и штата).
$query = DB::table('itemregistrations')
->join('state', 'itemregistrations.StateID', '=', 'state.StateID')
->select('itemregistrations.name');
if($request->input('negeri_perkhidmatan') != '') {
$query->join('itemregistrationpangkat', 'itemregistrationpangkat.itemRegistrationID', '=', 'itemregistrations.itemRegistrationID')
->where('itemregistrationpangkat.StateID', $request->input('negeri_perkhidmatan'));
}
if(request('tempoh_negeri')) {
$query->whereRaw('yearend - yearstart >= ?', [request('tempoh_negeri')]);
}
Отображение результатов:
ID | Name | State | years
---------------------------------------
1 | Tom | Kedah | 1
1 | Tom | Kedah | 4
2 | Anne | Melaka | 4
2 | Anne | Melaka | 5
3 | Bill | KL | 1
Результат должен быть:
ID | Name | State | years
---------------------------------------
1 | Tom | Kedah | 5
2 | Anne | Melaka | 9
3 | Bill | KL | 1
Результат, отображаемый в браузере, выбирается с помощью ajax. Я не помещаю это здесь.