もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

laravelのResourceCollectionのpaginationデータの返却値をいじりたい

こんばんは。

最近よく laravelさわってます。

paginationデータを ResourceCollectionで返却すると以下みたいなデータが返って来ると思います。

{
    "data": [
        {
            "id": 1,
            "name": "Eladio Schroeder Sr.",
            "email": "therese28@example.com"
        },
        {
            "id": 2,
            "name": "Liliana Mayert",
            "email": "evandervort@example.com"
        }
    ],
    "links":{
        "first": "http://example.com/users?page=1",
        "last": "http://example.com/users?page=1",
        "prev": null,
        "next": null
    },
    "meta":{
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "http://example.com/users",
        "per_page": 15,
        "to": 10,
        "total": 10
    }
}

なんか プロジェクト時に metaの内容をもっと変えたいみたいなのがあると思います。 そんなときに使えるのが paginationInformation

readouble.com

本題

例えば meta情報の中身を キャメルケースでもらいたいとかの場合は以下

    /**
     * @param Request $request
     * @param array $paginated
     * @param array $default
     * @return array
     */
    public function paginationInformation(Request $request, array $paginated, array $default): array
    {
        $default['meta'] = array_combine(
            array_map(static fn(string $k) => Str::camel($k), array_keys($default['meta'])),
            array_values($default['meta'])
        );

        return $default;
    }

終わりに

最近簡単なブログしか書けないのですが、そろそろちゃんと書かないとと思いながら、日々の仕事に忙殺されてます。

現場からは以上です。