Привет. Все, что я пытаюсь установить порядок в таблице MySQL. Структура таблицы выглядит так, как показано ниже, и содержит более 500 записей. Я создаю приложение в laravel 5.5:
| Id | Name | surname | orderby | address | created_by | updated_by |
|:--:|:------:|:----------:|:-------:|:------------:|:----------:|:----------:|
| 1 | Alice | wonderland | 1 | Disney world | 1 | 1 |
| 2 | donald | duck | 2 | Disney world | 1 | 1 |
| 3 | mickey | mouse | 3 | Disney world | 1 | 1 |
| - | ---- | ---- | --- | ---- | ---- | ---- |
| - | ---- | ---- | --- | ---- | ---- | ---- |
У меня есть пагинацияна основе упорядочения по столбцу orderby
, как показано в таблице выше, теперь у меня есть контроллер, в котором маршрут настроен на обновление упорядочения таблицы по столбцу orderby
, поскольку результаты разбиваются на страницы, обновляются только те строки, которыенаходятся в разбивке по страницам.но остальные 480 записей среди этих 500 записей не обновляются, я использовал плагин https://jqueryui.com/sortable/
с функциональностью ajax и код ниже:
$(document).ready(function () {
$( "#sortable" ).sortable({
placeholder : "ui-state-highlight",
update : function(event, ui){
var page_id_array = new Array();
$('#sortable tr.sort').each(function(){
page_id_array.push($(this).data("id"));
});
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url:"{{route('order.by.name.table')}}", //my route which is mapped to a controller function
method:"POST",
data:{order:page_id_array},
success:function(data){
toastr.success("Successfully updated order.");
}
});
}
});
});
и ниже - функция моего контроллера обновляет порядокмои записи:
public function orderByNameTable(Request $request)
{
$items = $request->input('order');
foreach ($items as $index => $id) {
$item = \App\Models\NameTable::findOrFail($id);
$item->orderby = $index + 1;
$item->id = $id;
$item->save();
}
return $item;
}
И моя модель выглядит примерно так:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NameTable extends Model
{
public function save(array $options = [])
{
if(!isset($this->created_by)){
$this->created_by = \Auth::user()->id;
}
$this->updated_by = \Auth::user()->id;
parent::save();
}
}
как я могу обновить остальные 480 порядков записей в таблице для столбца orderby
.
предложите, пожалуйста, бизнес-логику.
Спасибо за ваше время и помощь