yajra/laravel-datatables 搜索不适用于 laravel 5.7
Posted
技术标签:
【中文标题】yajra/laravel-datatables 搜索不适用于 laravel 5.7【英文标题】:yajra/laravel-datatables search is not working with laravel 5.7 【发布时间】:2019-03-08 04:45:54 【问题描述】:这是加入代码并分配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: select count(*) as aggregate from (select '1' as
row_count
fromproducto
ase
内连接marca
asd
one
.cod_marca
=d
.cod_marca
内连接tipo-producto
asj
one
.cod_tipo_producto
=j
.cod_tipo_producto
其中 (LOWER(producto
ase.cod_producto
) LIKE %1% 或 LOWER(producto
ase.nom_producto
) LIKE %1% or LOWER(producto
ase.precio_venta
) LIKE %1% 或 LOWER(marca
.nombre
) LIKE %1% 或 LOWER(tipo-producto
.nombre
) LIKE %1% 或 LOWER(producto
ase.estado
) LIKE %1%)) count_row_table)
【问题讨论】:
【参考方案1】:根据查询中的联接数据字段设置数据表列名称
这里是示例
"columns":[
data: 'cod_producto', name:'e.code_product',
data: 'nom_producto', name:'e.nom_producto',
....
【讨论】:
您的某些名称未正确指定,例如 data: 'nombre_tipo', name: 'nombre_tipo' 它必须是 data: 'nombre_tipo', name: 'j.nombre' 在这里阅读一些答案github.com/yajra/laravel-datatables/issues/899 非常感谢 这是为了加入更多的表,但我有一个单表查询生成器,它不工作搜索选项同样的错误【参考方案2】:hai i have a same problem, this my datatable :
public function yajra(Request $request)
DB::statement(DB::raw('set @rownum=0'));
$pengeluaran = DB::table('pengeluaran as a')->join('jenis_pengeluaran as b','a.jenis_pengeluaran', '=','b.id')->select([
DB::raw('@rownum := @rownum + 1 AS rownum'),
'a.id',
'a.tanggal',
'a.no_nota',
'a.uraian',
'a.jumlah',
'a.jenis_pengeluaran',
'b.nama']);
$datatables = Datatables::of($pengeluaran)->addColumn('action', function ($pl)
$url_edit = url('pengeluaran/'.$pl->id);
$url_hapus = url('pengeluaran/'.$pl->id);
return '<a href="'.$url_edit.'" class="btn btn-outline-secondary"> <i class="ni ni-ruler-pencil"></i>Edit</a> <a href="'.$url_hapus.'" class="btn btn-outline-secondary btn-hapus" style="color:red;"> <i class="ni ni-fat-remove" style="color:red;"></i>Hapus</a>';
)->editColumn('jumlah', function($pl)
$jumlah = $pl->jumlah;
$jumlah = number_format($jumlah,0);
$jumlah = str_replace(',', '.', $jumlah);
return $jumlah;
)->editColumn('tanggal', function($pl)
$tanggal = $pl->tanggal;
$tanggal = date('d M Y', strtotime($tanggal));
return $tanggal;
);
if ($keyword = $request->get('search')['value'])
$datatables->filterColumn('rownum', 'whereRaw', '@rownum + 1 like ?', ["%$keyword%"]);
return $datatables->make(true);
and this is my javascript
<script type="text/javascript">
$(document).ready(function()
$('#peng').DataTable(
processing: true,
serverSide: true,
ajax: " url('pengeluaran/yajra')",
columns: [
// or just disable search since it's not really searchable. just add searchable:false
data: 'rownum', name: 'rownum',
data: 'tanggal', name: 'tanggal',
data: 'no_nota', name: 'no_nota',
data: 'uraian', name: 'uraian',
data: 'jumlah', name: 'jumlah',
data: 'nama', name: 'nama',
data: 'action', name: 'action', orderable: false, searchable: false
]
);
i'm using "yajra/laravel-datatables-oracle": "~9.0" and laravel 7
【讨论】:
请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起更多的关注这个问题。以上是关于yajra/laravel-datatables 搜索不适用于 laravel 5.7的主要内容,如果未能解决你的问题,请参考以下文章
yajra / laravel-datatables搜索不适用于laravel 5.4
如何将数据库索引与 Datatables 和 yajra/laravel-datatables 一起使用