如何在Laravel中替换项目集合中的特定项目



我在Laravel中遇到了一点问题。我正在使用一个集合,在其中添加已注册到特定活动的新用户。这些以以下方式格式化

{
[
"ID" => "1",
"Email" => "test@example.com",
"Registrations" => [
"Sports" => [
[
"id" => "457",
"title" => "Football"
], 
[
"id" => "459",
"title" => "Rugby"
]
]
]
],
[
"ID" => "2",
"Email" => "test2@example.com",
"Registrations" => [
"Sports" => [
[
"id" => "457",
"title" => "Football"
], 
[
"id" => "458",
"title" => "Badminton"
]
]
]
]
}

我遇到的问题是,当试图添加新的Sports id时,我不知道该怎么做。我最初考虑的方法是检查特定的电子邮件是否已经注册,然后替换集合中的数据。然而,我遇到了一个问题,每次有一个现有的条目时,整个数据结构都会被替换。有什么有用的建议吗?下面是我已经有的参考

return $user_courses->where('ContactID' , $user['Registration']['Link']['Contact']['ContactID'])
->map(function($key) use ($user, $sportService){
$course_id = $sportService->validateSport($user['Registration']['Link']['Activity']['ContentUri']);
if($course_id){
$key['Registrations']['Sports'][] = [
'id' => $course_id,
'title' => $user['Registration']['Link']['Activity']['Title']
];
return $key;
}
return $key;
});

首先,您可以从集合中筛选出要替换的对象,然后将新对象推送给它。

签出此链接

最新更新