mercredi 1 mars 2017

Laravel + fractal "deeply" nested includes

I am using fractal (fractal.thephpleague.com) to develop an API with Laravel (laravel.com). It is an amazing library, by the way.

In certain web service, I need to return information of several nested models, which have 3 levels deep. That is, I have a Survey model which has many Survey Items, and each one of them has, in turn, many Survey Item Results (each one of a user). Well, I need the data from all of them, classified, that is:

"surveys": [
    {
        "id": 1,
        ...,
        "items": [
            {
                "id": 14,
                ...,
                "results": [
                    {
                        "id": 45,
                        ...
                    }, 
                    {
                        ...
                    }
                ]
            }, 
            {
                ...
            } 
        ]
    },
    {
       ...
    }
 }

With transformers and includes, I get the surveys and survey items info without problems, but I also need the survey item results... That is, I need something like 2-level "nested" includes, to get the information of the third level.

My best approach, so far (only returning two levels: surveys and survey items). In my controller:

return fractal() -> transform(
     Survey::where(...),
     new SurveyTransformer()
) -> include(['SurveyItems']) -> respond();

Any help is much appreciated. Thanks in advance.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire