【问题标题】:How to replace specific item in a collection of items in Laravel如何替换 Laravel 中项目集合中的特定项目
【发布时间】:2022-01-05 17:45:05
【问题描述】:

我在 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;
        });

【问题讨论】:

    标签: laravel collections


    【解决方案1】:

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

    查看此link

    【讨论】:

      猜你喜欢
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 2019-09-20
      • 2011-10-14
      相关资源
      最近更新 更多