我有一个嵌套项目(类别)列表,我想重新组织,通过排序和嵌套深度。我会试着解释一下:
当我通过单击蓝色按钮保存提交带有jQuery的表单时,它会处理models/categories_model.php
内的一个函数:
public function organize($items){
if( count($items)){
foreach($items as $order => $item){
if($item['item_id'] != ''){
echo '<pre>'.$order.'</pre>';
$data = array(
'pid' => (int) $item['parent_id'],
'ordering' => $order
);
$this->db
->set($data)
->where($this->_primary_key, $item['item_id'])
->update($this->_table_name);
}
}
}
}
它保存了这样的列表:
1
2
3
4
5
6
7
8
9
10
而不是像这样保存它:
1
1
2
3
4
2
1
2
3
1
2
1
2
3
3
不是逐个获取$order
值,而是应该将帐户作为嵌套项并从1开始计算$order
,而不是继续计算它的父项。
所以当我保存它时,我希望它们能像这样订购,但不知道怎么做:
有人知道如何使用嵌套项目吗?
答案 0 :(得分:1)
如果方法以正确的顺序接收项目,这应该有效:
public function organize($items)
{
if (!empty($items)) {
$orderByPid = array();
foreach ($items as $item) {
if($item['item_id'] != '') {
if (!isset($orderByPid[$item['parent_id']])) {
$orderByPid[$item['parent_id']] = 0;
}
$data = array(
'pid' => (int) $item['parent_id'],
'ordering' => ++$orderByPid[$item['parent_id']]
);
$this->db
->set($data)
->where($this->_primary_key, $item['item_id'])
->update($this->_table_name);
}
}
}
}