У меня есть запрос на посещаемость за последние 5 дней, который включает идентификатор сотрудника, его имя, дату и время входа и выхода.
Если я выполню запрос в MySql, он возвращаетправильная дата, но когда я использую Maatwebsite / Laravel excel, кажется, что в нем отсутствуют некоторые записи.
Я попытался провести какое-то исследование, но не могу найти способ определить, что его вызывает.
return $user = DB::table('users AS u')
->join('user_attendance AS a', function($join)
{
$join->on('u.user_id', '=', 'a.user_id')
->whereBetween('a.server_time', ["2019-10-01 00:00:00", "2019-10-15 23:59:59"]);
})
->select('u.user_id', 'u.username',
DB::raw(
'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`,
min(case when a.action = "OUT" then time(a.server_time) end) `OUT`'
)
)
->groupBy('u.user_id', 'u.username', DB::raw('Date(a.server_time)'))
->orderBy('u.user_id')
->orderBy(DB::raw('Date(a.server_time)'))
->get();
Результат в Mysql, если я выполню этот запрос, показанный ниже
| EmployeeId | EmployeeName | Date | IN | OUT |
------------------------------------------------------------------
| 400442 | Pooh | 2019-10-02 | 08:49:02 | 18:08:00 |
| 400442 | Pooh | 2019-10-07 | 08:29:22 | 18:08:35 |
| 400442 | Pooh | 2019-10-09 | 08:36:41 | 23:28:52 |
| 400442 | Pooh | 2019-10-10 | 08:20:15 | 21:40:12 |
| 400442 | Pooh | 2019-10-15 | 08:47:13 | 20:57:05 |
------------------------------------------------------------------
Но когда я запускаю код в Laravel с использованием MaatWebsite / Laravel-Excel, он возвращает неполную дату. Вот мой код
AutomailerController.php
namespace App\Http\Controllers;
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;
use DB;
class AutomailerController extends Controller
{
use Exportable;
public function export()
{
return Excel::download(new UserLogs, 'users.xlsx');
}
}
А вот мой UserLogs.php
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use DB;
class UsersExport implements FromCollection
{
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return $user = DB::table('users AS u')
->join('user_attendance AS a', function($join)
{
$join->on('u.user_id', '=', 'a.user_id')
->whereBetween('a.server_time', ["2019-10-01 00:00:00", "2019-10-15 23:59:59"]);
})
->select('u.user_id', 'u.username',
DB::raw(
'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`,
min(case when a.action = "OUT" then time(a.server_time) end) `OUT`'
)
)
->groupBy('u.user_id', 'u.username', DB::raw('Date(a.server_time)'))
->orderBy('u.user_id')
->orderBy(DB::raw('Date(a.server_time)'))
->get();
}
}
Если я позвоню через маршрутизатор с помощью браузера, он загрузит файл, нофайл будет выглядеть так, как показано ниже, «Неполные данные»
| EmployeeId | EmployeeName | Date | IN | OUT |
------------------------------------------------------------------
| 400442 | Pooh | | | 22:28:52 |
| 400442 | Pooh | 2019-10-10 | 08:20:15 | 21:40:12 |
------------------------------------------------------------------
Я ожидаю, что он будет иметь тот же результат, когда я запускаю его на Mysql.
Что-то происходит набэкэнд, который я пропустил?
Спасибо.