У меня была некоторая помощь по сети, и я изменил код, чтобы получить нужный вывод. Но когда я отлаживаю запрос, он показывает другой элемент.
Я упорядочиваю свою таблицу, а также группирую ее по дате в столбце, который состоит из даты и времени, но когда я отлаживаю запрос, он показывает несколько UTCтип datetime
Я пытался преобразовать его в datetime, но все равно не получилось.
$user = DB::table('users')
->join('user_attendance', function($join)
{
$join->on('users.user_id', '=', 'user_attendance.user_id')
->whereBetween('user_attendance.server_time', ["2019-10-01 00:00:00", "2019-10-01 23:59:59"]);
})
->select('users.user_id', 'users.username',
DB::raw(
'min(case when user_attendance.action = "IN" then date(user_attendance.server_time) end) `Date`,
min(case when user_attendance.action = "IN" then time(user_attendance.server_time) end) `IN`,
min(case when user_attendance.action = "OUT" then time(user_attendance.server_time) end) `OUT`'
)
)
->groupBy('users.user_id', 'users.username', date('user_attendance.server_time'))
->orderBy('users.user_id')
->orderBy(date('user_attendance.server_time'))
->dd();
На самом деле он был создан на mysql, как показано ниже (он работает), и я просто преобразовал его в запрос laravel
select
u.user_id,
u.username,
min(case when a.action = 'IN' then date(a.server_time) end) `Date`,
min(case when a.action = 'IN' then time(a.server_time) end) `IN`,
max(case when a.action = 'OUT' then time(a.server_time) end) `OUT`
from
users u
inner join user_attendance a on u.user_id = a.user_id AND (a.server_time BETWEEN '2019-10-01 00:00:00' AND '2019-10-15 23:59:59')
group by
u.user_id,
u.username,
date(a.server_time)
order by
u.user_id,
date(a.server_time)
Ошибка кода над ним это
Это как в порядке по и сгруппировать по -> дата (a.server_time)
становится так
00000024UTCWed, 23 Oct 2019 06:00:24 +0000_am3131UTC1023am102019-10-23T06:00:24+00:00UTC
. 24UTCWed, 23 Oct 2019 06:00:24 +0000000UTCWed, 23 Oct 2019 06:00:24 +0000_310010UTC