如何使用Laravel 5.2在数据表服务器端处理中执行算术计算?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Laravel 5.2在数据表服务器端处理中执行算术计算?相关的知识,希望对你有一定的参考价值。

我一直试图弄清楚如何对使用数据表服务器端处理返回的数据执行算术运算。这很容易使用客户端数据表执行,但如果使用服务器端处理,我该怎么做。这是我的代码。

ProductController.php

public function anyData()
{
    $conditionTxt = "Medical and Lab Supplies";

    $products = Product::where('category', 'ILIKE', '%'.$conditionTxt.'%')
                        ->orderBy('created_at', 'desc')
                        ->get();

    return Datatables::of($products)->make(true);

}

route.php

Route::get('datatables', 'ProductProductController@index');
Route::get('postproductsdata', 'ProductProductController@anyData');

javascript的:

$('#table-prod-contents').DataTable({
              processing: true,
              serverSide: true,
              ajax: $.fn.dataTable.pipeline( {
                  url: '{{ url("postproductsdata") }}',
                  pages: 6000 // number of pages to cache
              } ),
              columns: [
                  {data: 'id', name: 'id'},
                  {data: 'category', name: 'category'},
                  {data: 'pharmaceutical', name: 'pharmaceutical'},
                  {data: 'description', name: 'description'},
                  {data: 'type', name: 'type'},
                  {data: 'unit', name: 'unit'},
                  {data: 'price', name: 'price'},
                  {data: 'quantity', name: 'quantity'},
                  {data: 'created_at', name: 'created_at'},
              ]

          });

html

<table id="table-prod-contents" class="display" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th></th>
            <th>Category</th>
            <th>Product Name</th>
            <th>Description</th>
            <th>Type</th>
            <th>Unit</th>
            <th>Price</th>
            <th>Quantity</th>
            <th>Total</th>
            <th>Created at</th>
        </tr>
    </thead>

</table>

显示上面的代码,我想将价格乘以数量,然后在<th>Total</th>中显示。我该怎么做?

答案

尝试使用Render function

它让我们在表格中显示之前操纵数据。

$('#table-prod-contents').DataTable({
              processing: true,
              serverSide: true,
              ajax: $.fn.dataTable.pipeline( {
                  url: '{{ url("postproductsdata") }}',
                  pages: 6000 // number of pages to cache
              } ),
              columns: [
                  {data: 'id', name: 'id'},
                  {data: 'category', name: 'category'},
                  {data: 'pharmaceutical', name: 'pharmaceutical'},
                  {data: 'description', name: 'description'},
                  {data: 'type', name: 'type'},
                  {data: 'unit', name: 'unit'},
                  {data: 'price', name: 'price'},
                  {data: 'quantity',
                       render:function(data,type,row){
                        return (parseInt(data) * parseFloat(row[6]));
                            },
                  {data: 'created_at', name: 'created_at'},
              ]

          });
另一答案

好像你想动态地在数据表中添加一列,所以你可以这样做,

    $datatables =  Datatables::of($products)->addColumn('total',$price * $quantity);
   return $datatables->make(true);

以上是关于如何使用Laravel 5.2在数据表服务器端处理中执行算术计算?的主要内容,如果未能解决你的问题,请参考以下文章

我将如何在后台运行 Laravel 5.2 的队列监听器?

如何使用 5.2 版本在本地运行 laravel 项目

Laravel 和 yajrabox 数据表服务器端处理

如何解决:在 laravel 5.2 中找不到类“AddSourceInClotureTable”

Laravel 5.2 - 如何将变量(数组和整数)从视图传递到控制器?

如何在 laravel 5.2 中从 url 中删除 public