问题描述
我在 laravel yajra datatables
工作,一切正常,但如果我使用默认主键列作为 id
但为了安全起见,我只是将 id
列更改为 {{1 }} 并且当 yajra 加载记录时,它仍在搜索列 team_id
:
数据表代码:
id
如您所见,我的数据表 protected function getColumns()
{
return [
Column::make('team_id'),Column::make('name')->addClass('text-left'),Column::make('logo')->addClass('text-center')->orderable(false),Column::make('captain')->addClass('text-right'),Column::make('wicketKeeper')->addClass('text-right')->title('Wicket Keeper'),Column::make('substitute')->addClass('text-right'),Column::make('city_id')->addClass('text-right')->title('City'),Column::make('created_at'),Column::computed('action')
->exportable(false)
->printable(false)
->width(150)
->addClass('text-center'),];
}
函数具有 getColumns
列,即使我更改了 team_id
模型中的主键列也
团队模型
Team
但仍然出现同样的错误:protected $primaryKey = 'team_id';
谁能告诉我哪里错了?
解决方法
例如在 Laravel 的控制器中:
public function getMultiFilterSelect()
{
return view('datatables.eloquent.multi-filter-select');
}
public function getMultiFilterSelectData()
{
$users = User::select(['team_id','name','email','logo','captain','wicketKeeper','substitute','city_id']);
return Datatables::of($users)->make(true);
}
在 Javascript 代码中:
$('#users-table').DataTable({
processing: true,serverSide: true,ajax: 'https://datatables.yajrabox.com/eloquent/multi-filter-select-data',columns: [
{data: 'team_id',name: 'team_id'},{data: 'name',name: 'name'},{data: 'email',name: 'email'},{data: 'logo',name: 'logo'},{data: 'captain',name: 'captain'},{data: 'wicketKeeper',name: 'wicketKeeper'},{data: 'substitute',name: 'substitute'},{data: 'city_id',name: 'city_id'}
],initComplete: function () {
this.api().columns().every(function () {
var column = this;
var input = document.createElement("input");
$(input).appendTo($(column.footer()).empty())
.on('change',function () {
column.search($(this).val(),false,true).draw();
});
});
}
});
如果您仍然遇到有关数据表的一些问题,您可以轻松地按照文档 https://datatables.yajrabox.com/eloquent/multi-filter-select 在此处输入代码