【发布时间】:2018-06-10 23:03:40
【问题描述】:
如何过滤或排序由控制器修改的列以显示其他数据,例如用于显示 vendor_id 的列,但从控制器我编辑此表以显示 vendor_id 的名称,所以我想过滤,现在对名称进行排序不是身份证! 我想在表中显示所有检查信息,还想显示供应商的名称,该名称存在于 Vendors 表中,并且 vendor_id 这存在于检查和供应商表中,还想显示仅存在于 excategories 中的类别名称表和类别 id 在检查表中
我有 3 张桌子:
类别模型
public function checks()
{
return $this->hasMany(Checks::class);
}
public function vendors()
{
return $this->hasMany(Vendors::class);
}
供应商模式:
public function checks()
{
return $this->hasMany(Checks::class);
}
public function categories()
{
return $this->belongsTo(Excategories::class);
}
检查模型:
public function scopeBetween($query, Carbon $from, Carbon $to)
{$query->whereBetween('postingdate', [$from, $to]); }
public function vendors()
{return $this->belongsTo(Vendors::class);}
public function categories(){
return $this->belongsTo(Excategories::class);}
数据表中的输入:
var oTable = $('#users-table').DataTable({
dom: 'flBrtip',
stateSave: true,
paging: true,
pagingType: 'simple_numbers',
lengthMenu: [ [10,15, 30, 50, -1 ], [ 10,15, 30, 50, "All" ] ],
processing: true,
serverSide: true,
ajax: {
url: 'custom-filter-data',
data: function(d) {
d.start_date = $('input[name=start_date]').val();
d.end_date = $('input[name=end_date]').val();
}
},
columns : [
{data: 'details', name: 'details'},
{ data: 'postingdate', render: function (data) {
var date = new Date(data);
var month = date.getMonth() + 1;
return (month.length > 1 ? month : "0" + month) + "/" + date.getDate() + "/" + date.getFullYear();} },
{data: 'description', name: 'description'},
{data: 'amount', name: 'amount'},
{data: 'type', name: 'type'},
{data: 'vendor_name',mRender: function (data, type, row) {
return '<label hidden>'+data+'</label> <input type="text" id="vendor_name"
class="vendor_name" data-id="'+row.id+'" onClick="this.select();" value="'+data+'">';}},
{data: 'vendor_id', mRender: function (data, type, row) {
return '<label hidden>'+data+'</label> <input type="text" id="vendor_no"
class="vendor_no" onClick="this.select();" value="'+data+'">';}},
{data: 'category_id',mRender: function (data, type, row) {
return '<label hidden>'+data+'</label> <input type="text" id="category_name" class="category_name" data-id="'+row.id+'" onClick="this.select();" value="'+data+'">';}},
],
pageLength: 10,
});
oTable.draw();
控制器
public function getCustomFilterData()
{
$arrStart = explode("/", Input::get('start_date'));
$arrEnd = explode("/", Input::get('end_date'));
$start = Carbon::create($arrStart[2], $arrStart[0], $arrStart[1], 0, 0, 0);
$end = Carbon::create($arrEnd[2], $arrEnd[0], $arrEnd[1], 23, 59, 59);
$orders = Checks::between($start, $end);
return Datatables::of($orders)
->editColumn('category_id', function ($user) {
$category =Excategories::where('category_id',$user->category_id)->first();
return ( @$category->category_name);
})
->editColumn('vendor_id', function ($user) {
$category =Vendors::where('vendor_id',$user->vendor_id)->first();
return ( @$category->vendor_name);
}) ->addColumn('vendor_no', '{{$vendor_id}}')
->make( TRUE );
}
【问题讨论】: