我已将Yajra Datatables纳入我的Laravel项目并且工作正常。
问题是我需要合并3个列值并将它们显示为1并允许同时搜索。
我该怎么做?
我能够使用渲染功能并在单个列中显示数据。但那么如何搜索?
示例Mysql表:
student_master(fname,mname,lname)
在javascript上我有:
columns: [
{data: 'thiscanbeanything', render:function ( data, type, row ) {
return row.fname+row.mname+row.lname;
}},
]
控制器上的我的Ajax功能如下所示
$results = DB::table("student_master")
->select(['fname', 'mname', 'lname']);
return Datatables::of($results)
->make(true);
答案 0 :(得分:8)
您可以尝试以下代码
在服务器端
$results = DB::table("student_master")
->select(['fname', 'mname', 'lname']);
return Datatables::of($results)
->addColumn('mergeColumn', function($row){
return $row->fname.$row->mname.$row->lname;
})
->make(true);
Javascript Side
` columns: [
{data: 'mergeColumn', name: 'mergeColumn', searchable: false, sortable : false, visible:true},
{data: 'fname', name: 'fname', searchable: true, sortable : true, visible:false},
{data: 'mname', name: 'mname', searchable: true, sortable : true, visible:false},
{data: 'lname', name: 'lname', searchable: true, sortable : true, visible:false},
],`
以上代码未经过测试,但您可以尝试。如果您有任何问题,请告诉我。
答案 1 :(得分:0)
服务器端
$results = DB::table("student_master")
->select([
DB::raw('CONCAT(fname, " ", mname, " ", lname) as name'),
]);
return Datatables::of($results)
->filterColumn('name', function($query, $keyword) {
$query->whereRaw('CONCAT(fname, " ", mname, " ", lname) like ?', ["%{$keyword}%"]);
})
->make(true);
JS
columns: [
{ data: 'name'},
]
现在您可以搜索和排序