【发布时间】:2017-08-30 10:14:36
【问题描述】:
代码基于我之前的问题 Lvkz posted,它解决了我遇到的更大问题。但是我需要帮助找到一种方法来避免重复和错误的数字序列。
$winner_ranking = $winner->getRankings()->where('ranklist_id', $ranklist_id)->first();
$loser_ranking = $loser->getRankings()->where('ranklist_id', $ranklist_id)->first();
if ($winner_ranking->placement > $loser_ranking->placement) {
$rankings = ClubRanking::where('placement', '>', $loser_ranking->placement)
->where('ranklist_id', '=', $ranklist_id)
->increment('placement', 2);
$winner_ranking->placement = $loser_ranking->placement;
$winner_ranking->save();
$loser_ranking->placement = $loser_ranking->placement + 1;
$loser_ranking->save();
}
用户 A = 展示位置:1
用户 B = 展示位置:2
如果用户B胜过用户A,那么号码序列将如下所示
用户 B = 展示位置:1
用户 A = 展示位置:2
用户 C = 展示位置:4
用户 D = 展示位置:5
用户 E = 展示位置:6
还有一个快速说明,问题仍然持续存在,但如果我将 increment 更改为 1 而不是 2,则以不同的方式.
【问题讨论】:
-
什么是
$ranklist_id? -
$ranklist_id 是一个 GET 路由参数,所以本质上它只是我们想要更改内容的排名列表的 ID。 (澄清一下:有几个排名。)