0

我正在尝试在 Laravel 5.5 中对 json 响应进行分组

我的桌子在下面

+------+-------+------------------------------------------------------- 
--------------------------------------------------+
| year | month | people                                                                                                  
|
+------+-------+------------------------------------------------------- 
--------------------------------------------------+

| 2017 |    3 | 松本 知実                                                                                               
|
| 2016 |    12 | 中島 春香,中津川 充,村山 裕樹,杉山 翼,中島 春香,木村 稔                                                 
|
| 2017 |     3 | 桐山 裕太,吉本 稔,藤本 稔                                                                               
|
| 2015 |     3 | 喜嶋 学,若松 康弘,鈴木 直子,宮沢 幹                                                                     
|
| 2017 |    11 | 大垣 晃,江古田 里佳,野村 康弘,中村 美加子,喜嶋 裕太                                                     
|
| 2016 |     6 | 中島 春香,中津川 充,村山 裕樹,杉山 翼,中島 春香,木村 稔                                                       
|
| 2015 |    11 | 野村 英樹,工藤 智也,山本 七夏,青田 舞                                                                   
|

我想得到以下 json 响应

"2015" : {
    "3" : {
        "people" : "喜嶋 学,若松 康弘,鈴木 直子,宮沢 幹"
    },
    "11" : {
        "people" : "野村 英樹,工藤 智也,山本 七夏,青田 舞"
    },
},
"2016" : {
    "6" : {
        "people" : "中島 春香,中津川 充,村山 裕樹,杉山 翼,中島 春香,木村 稔"
    },
    "12" : {
        "people" : "中島 春香,中津川 充,村山 裕樹,杉山 翼,中島 春香,木村 稔"
    },
},
"2017" : {
    "3" : {
        [
            "people" : "松本 知実",
            "people" : "桐山 裕太,吉本 稔,藤本 稔",
        ]
    },
    "11" : {
        "people" : "大垣 晃,江古田 里佳,野村 康弘,中村 美加子,喜嶋 裕太"
    },
}

但是我不能按同一年和同一个月对人员数据进行分组……我的代码在这里。

我的控制器

class PublicationController extends Controller
{
    public function index()
    {
        $publications = Publication::orderBy('year', 'DESC')
            ->orderBy('month', 'DESC')
            ->get();
        return PublicationResource::collection($publications);
    }
}

和我的资源

class PublicationResource extends Resource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            $this->year => [
                $this->month => [
                    'people' => $this->people,
                ],
            ],
        ];
    }
}

但现在在我的代码中,响应如下。

"2017": {
    "11": {
        "people": "大垣 晃,江古田 里佳,野村 康弘,中村 美加子,喜嶋 裕太"
    }
},
"2017": {
    "3": {
        "people": "松本 知実"
    }
},
"2017": {
    "3": {
        "people": "桐山 裕太,吉本 稔,藤本 稔"
    }
},
"2016": {
    "12": {
        "people": "中島 春香,中津川 充,村山 裕樹,杉山 翼,中島 春香,木村 稔"
    }
},
"2016": {
    "6": {
        "people": "中島 春香,中津川 充,村山 裕樹,杉山 翼,中島 春香,木村 稔"
    }
},
"2015": {
    "11": {
        "people": "野村 英樹,工藤 智也,山本 七夏,青田 舞"
    }
},
"2015": {
    "3": {
        "people": "喜嶋 学,若松 康弘,鈴木 直子,宮沢 幹"
    }
},

我想按同一年和同一个月对我的数据进行分组。

我应该如何更改我的代码?

对不起,我是 laravel 的新手。所以请帮助我!

4

1 回答 1

0

将您的控制器编辑为

class PublicationController extends Controller
{
public function index()
{
    $publications = Publication::orderBy('year', 'DESC')
        ->orderBy('month', 'DESC')
        ->get();
    return $publications->groupBy('year');
 }
}
于 2018-04-08T16:58:22.733 回答