这是联接代码并分配Datatables

Route::get('Productos',function(){
  $query = DB::table('producto as e')
         ->select('e.cod_producto', 'e.nom_producto', 'e.precio_venta', 'd.nombre as nombre_marca', 'j.nombre as nombre_tipo', DB::raw('if(e.estado = 0,\'Activo\',\'Eliminado\') as estado'))
         ->join('marca as d','e.cod_marca', '=', 'd.cod_marca')
         ->join('tipo-producto as j', 'e.cod_tipo_producto', '=', 'j.cod_tipo_producto');

    return datatables()
              ->of($query)
              ->addColumn('btn','actions')
              ->rawColumns(['btn'])
              ->toJson();

});


这是jQuery代码

$(document).ready(function(){
    $('#Productos').DataTable({
      "bAutoWidth": false,
       "destroy": true,
       "responsive": true,
       "serverSide":true,
       "ajax":'{{url('api/Productos')}}',
       "columnDefs": [ {
         "targets": 'no-sort',
         "orderable": false,
         "searchable": false,
       }],
       "columns":[
         {data: 'cod_producto'},
         {data: 'nom_producto'},
         {data: 'precio_venta'},
         {data: 'nombre_marca'},
         {data: 'nombre_tipo'},
         {data: 'estado'},
         {data: 'btn'},
       ]
    });
});


现在,当我尝试搜索某些内容时,它会提示我错误,这是一条错误消息


  异常消息:↵↵SQLSTATE[42000]:语法错误或访问冲突:
  1583调用本机函数“ LOWER”(SQL:
  从中选择count(*)作为聚合(从中选择作为row_count
  producto作为e内部联接marca作为de上。cod_marca =
  dcod_marca内部联接tipo-producto作为j
  ecod_tipo_producto = jcod_tipo_producto其中
  (LOWER(producto as e.cod_producto)像%1%或LOWER(producto as
  e.nom_producto)喜欢%1%或LOWER(producto as e.precio_venta
  像%1%或LOWER(marcanombre)像%1%或
  LOWER(tipo-productonombre)像%1%或LOWER(producto作为
  e.estado)喜欢%1%))count_row_table)

最佳答案

根据查询的联接数据字段设置数据表列名称

这是样本

 "columns":[
     {data: 'cod_producto', name:'e.code_product'},
     {data: 'nom_producto', name:'e.nom_producto'},
    ....

关于php - yajra/laravel-datatables搜索不适用于laravel 5.7,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52618813/

10-13 07:28