我有问题,我无法从组合列中找到数据
我有类似的数据表,名称是从users.first_name和users.last_name组合的,但是该fullname
无法找到它示例:
first_name:ana,
last_name:女王
如果我搜索" ANA"但是,如果我搜索" ana Queen",我就不会得到结果。
$(function () {
$("#datatable").DataTable({
processing: true,
serverSide: true,
"order": [[ 1, "asc" ]],
ajax: "{!! route('admin.customers.getdata','Umum') !!}",
columns: [
{ data: null, bSortable: false, className: "text-center" },
{ data: "id" },
{ data: "name", name: "name" },
{ data: "type" },
{ data: "email" },
{ data: "location" },
{ data: "active", bSortable: false, className: "text-center" },
{ data: "free_ongkir", bSortable: false, className: "text-center" },
{ data: "action", bSortable: false, className: "text-center" }
],
fnRowCallback: function(nRow, aData, iDisplayIndex){
$("td:first", nRow).html(iDisplayIndex +1);
return nRow;
}
});
这是控制器的代码
public function getdata($type)
{
$users = User::where(['type'=>$type])->whereHas('roles', function ($query) {
$query->where('slug', '=', 'user');
})->get();
foreach ($users as $key => $value) {
if($value->id == Sentinel::getUser()->id) $value->disabled = "disabled";
else$value->disabled = "";
}
return Datatables::of($users)
->editColumn('name', '
<a href="{{ route('admin.customers.show', $id) }}">{!! $first_name." ".$last_name !!}</a>
')
->filterColumn('name', function($query, $keyword) {
$sql = "CONCAT(users.first_name,'-',users.last_name) like ?";
$query->whereRaw($sql, ["%{$keyword}%"]);
})
->editColumn('type', function($users) {
if($users->hasAccess('superadmin')) return 'Super Admin';
else return "Komoditi $users->type";
})
->editColumn('active', function($users) {
if(!$users->is_approved) {
return '<span class="has-error form-group"><label><i class="fa fa-times-circle-o"></i> Belum di approve</label></span>';
} else if(Activation::completed($users)) {
return '<span class="has-success form-group"><label><i class="fa fa-check"></i> Aktif</label></span>';
} else {
return '<span class="has-error form-group"><label><i class="fa fa-times-circle-o"></i> Belum Aktivasi</label></span>';
}
})
->editColumn('free_ongkir', function($users) {
if ($users->free_ongkir == 1) {
return '<span class="has-success form-group"><label><i class="fa fa-check"></i></label></span>';
}else {
return '<span class="has-error form-group"><label><i class="fa fa-times-circle-o"></i></label></span>';
}
})
->editColumn('location', function($users){
if(empty($users->city->name)) return 'None';
else return $users->city->name;
})
->addColumn('action', '@if(Sentinel::getUser()->hasAccess(["customers.edit"]))<button class="btn btn-primary" type="button" onClick="location.href='{{ route('admin.customers.edit', $id) }}'"><i class="fa fa-edit"></i></button>
@endif
{!! Form::open([
'method'=>'DELETE',
'route' => ['admin.customers.destroy', $id],
'style' => 'display:inline'
]) !!}
@if(Sentinel::getUser()->hasAccess(["customers.destroy"]))
{!! Form::button('<i class="fa fa-trash"></i>', ['class' => 'btn btn-danger btn-md','type'=>'submit','onclick'=>'return confirm("Are you sure want to delete?")', $disabled]) !!}
@endif
{!! Form::close() !!}
')
->make(true);
}
如何组合first_name和last_name列,我可以搜索基础。
谢谢。
您可以做
之类的事情 $datatables->filterColumn('name', 'whereRaw',
"CONCAT(users.fname,',',users.lname) like ? ", ["%$keyword%"]);
尝试使用MySQL DB尝试此示例。
$query->where(DB::raw('CONCAT_WS(" ", first_name, last_name)'), 'like', $search);
将 =
更改为。"%"。like
。"%"。喜欢:
$users = User::where(['type'=>$type])->whereHas('roles', function ($query) {
$query->where('slug', '%' .'like'. '%', 'user');