【发布时间】:2019-04-27 10:57:37
【问题描述】:
我有一个如下所示的表格,该表格将用于项目图像。
id:主键
project_id:与项目相关的列。
order_num:表示特定项目的图像列表顺序(例如项目的内部视图,施工项目的外部视图,不同的方面等......)
+---------+-------------+-----------+
| id | project_id | order_num |
+---------+-------------+-----------+
| 1 | 15 | 0 |
+---------+-------------+-----------+
| 2 | 15 | 0 |
+---------+-------------+-----------+
| 3 | 16 | 0 |
+---------+-------------+-----------+
| 4 | 16 | 0 |
+---------+-------------+-----------+
| 5 | 16 | 0 |
+---------+-------------+-----------+
.
.
.
GOES ON LIKE THIS
What i want to do:
+---------+-------------+-----------+
| id | project_id | order_num |
+---------+-------------+-----------+
| 1 | 15 | 1 |
+---------+-------------+-----------+
| 2 | 15 | 2 |
+---------+-------------+-----------+
| 3 | 16 | 1 |
+---------+-------------+-----------+
| 4 | 16 | 2 |
+---------+-------------+-----------+
| 5 | 16 | 3 |
+---------+-------------+-----------+
我使用 Slim 和 Eloquent
我想出了类似的方法,但是我得到了 save() 方法的 bad method 错误。
$find = Images::where('project_id', '=', $project->id)->count();
$img = Images::where('project_id', '=', $project->id);
for ($i = 1; $i <= $find; $i++) {
$img->order_num = $i;
$img->save();
}
我做错了吗?任何帮助将不胜感激。
更新 [!!] 两个答案都给出了正确的结果,但根据 odan 的信息,apokryfos 的答案是干净的代码。感谢您的所有帮助。
【问题讨论】:
-
是
order_num还是order_id需要改? -
啊抱歉写错了,但问题不存在
-
请使用查询生成器,而不是这个 Active Record 反模式。
-
@odan hi,odan,你的意思是下面给出的 each() 函数?
-
@bgul 是的,在这种情况下,循环更新多条记录是一种真正的反模式。