我正在使用doctrine在zf2中开发一个项目,我需要创建一个方法来重新编号order
字段,以便值是连续的。之前:
+-----+-------+--------+------------+
| id | order | item | collection |
+-----+-------+--------+------------+
| 987 | 1 | apple | fruits |
| 46 | 2 | banana | fruits |
| 394 | 7 | grape | fruits |
| 265 | 30 | pear | fruits |
| 89 | 1 | squash | vegetables |
+-----+-------+--------+------------+
后:
+-----+-------+--------+------------+
| id | order | item | collection |
+-----+-------+--------+------------+
| 987 | 1 | apple | fruits |
| 46 | 2 | banana | fruits |
| 394 | 3 | grape | fruits |
| 265 | 4 | pear | fruits |
| 89 | 1 | squash | vegetables |
+-----+-------+--------+------------+
订单序列是collection
,但我不需要该方法来重新编号整个数据集;只是特定集合中的记录。
我正在考虑的一些解决方案包括:
new_order
的字段,该字段是自动编号字段,id
字段上的表格并更新current_table.order =
new_table.new_order
,$collection = … // results from select query where collection=fruits
n = 1;
For each ($collection as $item) {
// update query to set order=n where id=$item[id]
n += 1
}
还有其他想法吗?
答案 0 :(得分:0)
非常,当然,请使用第二种方法...... I.E.循环记录并更新。
不使用临时表的快速原因:
你应该做的是: