Laravel 5.5。 - 从两个集合创建集合

时间:2018-03-27 09:54:35

标签: php laravel laravel-5 collections eloquent

我有来自2个雄辩要求的两个不同的集合($ training_sessions& $ users_count)

我的第一个系列是为我提供培训课程的信息:

2 => {#464 ▼
  +"date": "2018-02-24"
  +"id": 4
  +"debutsession": "13:30:00"
  +"finsession": "17:00:00"
  +"creneau": "13:30:00 - 17:00:00"
  +"created_at": null
  +"updated_at": null
  +"nom": "MYNAME"
  +"prenom": "MYSURNAME"
  +"salle": "ROOM NAME "
  +"sessions": "SESSION NAME"

我有第二个收藏集,它给了我一些将参加会议的用户

0 => {#564 ▼
  +"id": 2
  +"userscount": 4
}
1 => {#562 ▼
  +"id": 3
  +"userscount": 1
}

我试图找出哪种方法可以让我创建一个单独的集合,这将为每个培训课程提供我从第二个集合中获得的与会者人数(字段userscount)

例如id = 2:

2 => {#464 ▼
  +"date": "2018-02-24"
  +"id": 2
  +"debutsession": "13:30:00"
  +"finsession": "17:00:00"
  +"creneau": "13:30:00 - 17:00:00"
  +"created_at": null
  +"updated_at": null
  +"nom": "MYNAME"
  +"prenom": "MYSURNAME"
  +"salle": "ROOM NAME "
  +"sessions": "SESSION NAME"
  +"userscount": 1
}

对于没有任何与会者的会议,我会:

2 => {#464 ▼
  +"date": "2018-02-24"
  +"id": 2
  +"debutsession": "13:30:00"
  +"finsession": "17:00:00"
  +"creneau": "13:30:00 - 17:00:00"
  +"created_at": null
  +"updated_at": null
  +"nom": "MYNAME"
  +"prenom": "MYSURNAME"
  +"salle": "ROOM NAME "
  +"sessions": "SESSION NAME"
  +"userscount": 0
}

1 个答案:

答案 0 :(得分:1)

首先,您需要更改第二个集合(用户数量),以便按用户ID编制索引,然后我们可以通过 ID userscount >:

$usercounts = $usercounts->keyBy('id');

其次,您需要处理第一个集合并添加 usercount 属性:

$firstCollection->each(function($record) use ($usercounts) {
  if($usercounts->has($record['id'])) {
    $record['usercount'] = $usercounts[$record['id']]['usercount'];
  } else {
    $record['usercount'] = 0;
  }
});