Laravel Datatables с переводами и Carbon - проблема с языком по умолчанию в первой строке - PullRequest
0 голосов
/ 14 сентября 2018

Сегодня у меня возникла странная проблема с использованием переводов в Laravel с Углеродом и особенно с реализацией Datatables .

Я использую:

  1. Laravel 5.6.38
  2. yayra / laravel-datatables-oracle 8.8
  3. PHP 7.2.9

Предположим, у меня есть простая таблица Orders, в которой есть столбец created_at, ничего особенного ...

Я получаю эти данные через AJAX из OrderController следующим образом:

public function data() {

    // Carbon::setLocale(App::getLocale());

    $orders = Order::get(['id','created_at']);

    return DataTables::of($orders)
        ->addColumn('created_at_humans', function (Order $order) {
            return $order->created_at->diffForHumans();
        })
        ->make(true);
}

Наконец, моя проблема заключается в том, что я получаю неправильный перевод для первой строки ТОЛЬКО в столбце create_at_humans - он переведен на язык по умолчанию, определенный в Laravel.

Другими словами, эта первая строка не получает переведенное значение из Carbon diffForHumans, и все последующие строки переводятся правильно. Если я нажимаю на любую сортировку, на следующей странице, поиске, все переводится, кроме более старой первой строки, поэтому при следующих дальнейших запросах неправильные данные все еще сохраняются ...

Если я добавлю:

Carbon::setLocale(App::getLocale());

Перед вызовом функции Datables, как в приведенном выше примере кода, все работает как положено.

Я бы хотел, чтобы он работал на всех моих объектах Laravel в этом проекте, без каких-либо обходных путей ...

Буду рад любой помощи или мыслям по этой проблеме ...

...