Я создаю меню продуктов, которое администратор может заказать/сортировать, перетаскивая его. Это меню состоит из нескольких категорий (ProductCategory) и продуктов (Product).
Я использую HTML5Sortable на стороне клиента, чтобы разрешить вложенный d & d. Разметка довольно проста:
<div class="categories">
@foreach($categories as $category)
<div class="category">
@foreach($category->products as $product)
<div class="products">
<div class=""product" data=id="{{ $product->id }}">
{{ $product->name }}
</div>
</div><!-- /products !-->
@endforeach
</div><!-- /category !-->
@endforeach
</div>
И соответствующий javascript:
$('.categories').sortable({
items: '.category'
});
$('.products').sortable({
items: '.product'
});
// Will be called when the user is done repositioning the products and categories
function getOrderedList() {
var data = {};
$('.categories').find('.category').map(function(i) {
var category = $(this);
data[i] = {};
data[i].id = category.data('id');
data[i].products = category.find('.product').map(function() {
return $(this).data('id');
}).get();
});
data = JSON.stringify(data); // Send data to server
}
Функция getOrderedList
отправит строку JSON обратно в Laravel, которая содержит идентификатор отсортированной категории и идентификатор продукта:
{"0":{"id":1,"products":[2,3,1,4,5,6,7,8,9,10]},"1":{"id":2,"products":[11,12,13,14]},"2":{"id":3,"products":[15,16,17,18]}}
Как мне сделать эту работу в фоновом режиме? Думаю, я должен хранить этот массив где-то в базе данных, а затем найти и заказать модели по идентификаторам?
Вкратце: что такое чистое и гибкое решение для сортировки (вложенных) моделей (внутри Laravel)?