随机选择记录和分组(随机分区行)

时间:2016-04-07 18:14:22

标签: mysql random laravel-5

嗨,我有员工表,我想随机分配到不同的部门 让我们假设员工表结构如下

id  staffname 
1   A    
2   B    
3   C    
4   D    
5   E    
6   F    
7   G    
8   H    
9   I  

任何想法?如何随机选择员工并将他们分配到多个组,以便没有员工在部门中重复,例如

部门1

 id  staffname 
 3   C        
 5   E    
 6   F       
 9   I

部门2

id  staffname 
1   A        
4   D   
7   G 

部门3

id  staffname 
1   A    
2   B    
8   H 

我想在Laravel / Mysql

中这样做

1 个答案:

答案 0 :(得分:0)

您可以使用随机和diff的方法。 考虑到您将搜索所有Staff实体,请尝试以下方法:

$staff = Staff::all();

$i = 0;
while($staff->count() > 0) {
   $random = $staff->random(3);
   foreach($random as $s) {
      $s->departament_id = $i;
   }
   $staff = $staff->diff($random);
   $i++;
}

当然,您需要在保存之前检查departament_id,或者甚至在方法中创建一个,但这就是想法。

我希望它有所帮助...