对Laravel Api资源进行分组

时间:2018-04-08 07:20:10

标签: json laravel api laravel-5.5 jsonapi-resources

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

我的表格如下

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QSystemTrayIcon
class Ui_Form(object):
    def setupUi(self, Form):


        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.btn_name = QtWidgets.QPushButton(Form)
        self.btn_name.setGeometry(QtCore.QRect(300, 30, 98, 33))
        self.btn_name.setObjectName("btn_name")
        self.btn_name.clicked.connect(self.minimize)
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.btn_name.setText(_translate("Form", "PushButton"))

    def minimize(self):
        print("Test")  




if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

我想得到以下json回复

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

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

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

我的控制器

"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,
                ],
            ],
        ];
    }
}

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

我该如何更改我的代码?

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

1 个答案:

答案 0 :(得分:0)

将控制器编辑为

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