我有一个 waitlist
表,与 attendee
表存在多对多关系。
基本上,等待名单中的与会者列表...我需要存储每个与会者在等待名单上的位置。 IE。 order_number
是一个自增唯一整数:1,2,3,4,5,6...
Waitlist_Attendee 表
id
attendee_id_fk
waitlist_id_fk
订单号
我的问题是,如果我的候补名单中有很多与会者,如果我稍后从候补名单中删除与会者,我该如何更新 order_number?假设 order_number=1
从等候名单中删除。我需要更新 order_number=2
,使其现在为 order_numer=1
,并继续针对每个 order_number
等等...
是否有一种 SQL 方法可以自动重新排序数字,以便它始终是一个顺序列表?或者我需要编写一个排序函数来对它们进行编号吗?
或者有我不知道的更好的方法吗?
最佳答案
我想您只需要遍历您的与会者并更改订单号即可。
$waitList = WaitList::with(['attendees' => function($q){
$q->orderBy('order_number');
})->find(1);
$count = 1;
foreach($waitList->attendees as $attendees)
{
WaitList::find(1)->attendees()->updateExistingPivot($attendees->id, ['order_number' => $count]);
$count++;
}
关于mysql - 如何在sql中维护队列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31865656/