mysql - 如何在sql中维护队列号

标签 mysql laravel

我有一个 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/

相关文章:

mysql - 从 PHP 序列化到 MySQL 的安全风险?

laravel - 关闭 Laravel artisan 命令的 ANSI 颜色

php - 检查 Laravel 中的 session 超时

javascript - 如何减少laravel中js/css上的HTTP请求

mysql - 使用 SQLQuery 显示完整查询

php - WooCommerce:使用 SQL 查询获取产品类别的购买商品

php - Laravel - 保存与更新

Laravel/Scout/Algolia 按 id/index/objectID 搜索

要从 1 小时前选择的 Sql 查询?

mysql - 运行EXPLAIN时,如果key的字段值不为null,Extra为空,是否使用了key?