Как показано на рисунке ниже, я использую Datatable для вывода списка продуктов и количественных данных, введенных пользователем.
![table](https://i.stack.imgur.com/FY0He.png)
Но я хочу ограничить добавление одного и того же элемента более одного раза. Я использую Ajax для получения данных из базы данных и метод Datatable draw () для создания таблицы выше. Как видно, есть две записи с одинаковым идентификатором или именем MAterial. Как я могу избежать этой проблемы?
mat_req_table.row.add( {
"mat_id": response.id,
"name": response.name,
"quantity":check,
"action": '<button id="edit" class="btn btn-info btn-sm"><i class="far fa-edit"></i></button> <button id="remove" class="btn btn-danger btn-sm"><i class="far fa-trash-alt"></i></button>',
} ).draw();
Так я заполняю DataTable
$('#add').click(function(){
if( $('#materialselect').val() != ''){
var check = $('#quantity').val();
var params = {
key1: $('#materialselect').val(),
key2: $('#quantity').val(),
};
$.ajax({
url: BASE + 'materialrequest/add',
type: 'POST',
dataType: 'JSON',
data: $.param(params),
success: function (response) {
var max =(response['high_bulk']);
if(check > max){
alert('amount you request can not be exceed total stock amount');
$('#quantity').val('');
}else{
mat_req_table.row.add( {
"mat_id": response.id,
"name": response.name,
"quantity":check,
"action": '<button id="edit" class="btn btn-info btn-sm"><i class="far fa-edit"></i></button> <button id="remove" class="btn btn-danger btn-sm"><i class="far fa-trash-alt"></i></button>',
} ).draw();
$('#materialselect').val('');
$('#quantity').val('');
}
}
});
return false;
}else{
alert('please select material');
}
});
Серверная сторона
public function add(Request $request)
{
if($request->get('key2')){
$key1 = $request->get('key1');
$key2 = $request->get('key2');
$material_name = $key1;
$material = MaterialRegister::where('name',$material_name)->first();
return response()->json(['name'=>$material->name,'id'=>$material->id,'high_bulk'=>$material->high_bulk]);
}
}
Таблица объявлений
var mat_req_table = $('#materialrequesttable').DataTable( {
searching:false,
paging:false,
"ordering":false,
bInfo:false,
data:[],
columns: [
{data: 'mat_id', name: 'mat_id'},
{data: 'name', name: 'name'},
{data: 'quantity', name: 'quantity'},
{data: 'action', name: 'action'},
]
} );