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

时间:2017-11-24 06:10:51

标签: php laravel laravel-5.5

我有这样一张桌子: enter image description here

CourseCategory可以在此表格中包含重复内容,这意味着courseCategory可以包含多个courseNames

我正在取这样的所有courseCategory

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

enter image description here

但是现在我想将所有注意到这个集合中的courseCategory的courseNames映射出来。 以便我可以拥有$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);

看起来像这样不太正确:

enter image description here

我该怎么做?

1 个答案:

答案 0 :(得分:0)

首先获取所有数据

$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');  
});