Laravel |将一个集合映射为另一个集合的 属性

Laravel | Map one collection as property of another collection

我有一个 table 这样的:

CourseCategory 可以在这个 table 中有重复项,这意味着 courseCategory 可以有多个 courseNames.

我正在像这样获取所有 courseCategory

$courseCategories = Course::all()->pluck('courseCategory')->unique();

但现在我想映射属于该集合中某个 courseCategory 的所有 courseName。 这样我就可以拥有一个 $courseCategories,我希望能够像这样访问它:

foreach($courseCategories as $courseCategory){
  foreach($courseCatgory->courseNames as name){
 //code 
 }
}

得到这样一个$courseCategories到目前为止我已经尝试过:

foreach ($courseCategories as $courseCategory) {

     $courseCategories->$courseCategory = Course::where('courseCategory', '=', $courseCategory)->pluck('courseName');

}
     dump($courseCategories);

看起来像这样不太正确:

我该怎么做?

先获取所有数据

$data = Course::all()

获取其类别

$categories = $data->pluck('courseCategory')->unique();

然后进行一些映射和过滤以获得每个子类别。

$result = $categories->map(function($category) use ($data) { 
    return $data->filter(function($row) use ($category) { 
        return $category == $row->courseCategory; 
    })->pluck('courseName');  
});