Сегодня у меня возникла странная проблема с использованием переводов в Laravel с Углеродом и особенно с реализацией Datatables .
Я использую:
- Laravel 5.6.38
- yayra / laravel-datatables-oracle 8.8
- 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 в этом проекте, без каких-либо обходных путей ...
Буду рад любой помощи или мыслям по этой проблеме ...