Результат запроса Maatwebsite / Laravel-Excel отличается от загруженного XLS - PullRequest
1 голос
/ 24 октября 2019

У меня есть запрос на посещаемость за последние 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.

Что-то происходит набэкэнд, который я пропустил?

Спасибо.

1 Ответ

0 голосов
/ 13 ноября 2019

В документации сказано, что не положил получить, может быть, это ошибка. https://docs.laravel -excel.com / 3.1 / экспорт / из-query.html

...