Проблема сортировки после рендеринга таблиц в таблицах данных Laravel как реализация сервиса - PullRequest
0 голосов
/ 04 июля 2018

Я реализовал laravel dataTable как сервис. Первые два столбца являются фактическими идентификаторами и именами, поэтому я могу отсортировать их как asc / desc после рендеринга таблицы. Но следующие несколько столбцов отображаются после выполнения нескольких вычислений, то есть эти значения не извлекаются напрямую из какого-либо столбца, а обрабатываются. Я не могу отсортировать эти столбцы, где были выполнены вычисления, и я получаю эту ошибку. И я знаю, что он ищет тот конкретный столбец, например, для имя_посещания, которого у меня нет в БД, скорее это вычисленная сумма из двух или более столбцов, которые есть в некоторых других таблицах. Любые предложения о том, как преодолеть эту проблему?

After clicking the Outstanding column

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Для функций SQL это будет работать следующим образом

->addSelect(DB::raw('COUNT(products.id) as product_count'));
->orderByRaw(DB::raw('COUNT(products.id)'),'DESC');
0 голосов
/ 04 июля 2018

Похоже, вы пытаетесь сортировать по значениям, которые не являются столбцами, а рассчитываются значения. Таким образом, основная проблема здесь - предоставить Eloquent / MySql данные, необходимые для сортировки.

// You might need to do some joins first
->addSelect(DB::raw('your_calc as outstanding_amount'))
->orderBy('outstanding_amount') // asc can be omitted as this is the default

// Anternative: you don't need the value sorted by
// Don't forget any joins you might need
->orderByRaw('your_calc_for_outstanding_amount ASC')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...