tailflow / laravel-orion

The simplest way to create REST API with Laravel

Home Page:https://orion.tailflow.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Include Relationships in CRUD controller

alive2tinker opened this issue · comments

Hi there,

I want to return relationship object in the CRUD controller. For Example, when I call api/coupons to fetch all coupons in the system, I want to include the user relationship object.

I have attempted to use the builder while customizing the query, but that did NOT work. see snippet below:

/**
     * Builds Eloquent query for fetching entities in index method.
     *
     * @param Request $request
     * @param array $requestedRelations
     * @return Builder
     */
    protected function buildIndexFetchQuery(Request $request, array $requestedRelations): Builder
    {
        $query = parent::buildIndexFetchQuery($request, $requestedRelations);
        
        $query->with('user');

        return $query;
    }

    protected function runIndexFetchQuery(Request $request, Builder $query, int $paginationLimit): LengthAwarePaginator
    {
        return $query->paginate($paginationLimit);
    }

This is the response always returned:

{
    "data": [
        {
            "id": 1,
            "offer": {
                "ar": "et",
                "en": "modi"
            },
            "code": "repellendus",
            "details": {
                "ar": "Sit quia iste illum. Et et laborum qui consequatur aut sint non. Eveniet velit iste qui aperiam.",
                "en": "Reprehenderit error laborum quia numquam et iste nulla. Ut facilis eaque ipsam delectus. Totam fugiat et ipsum tenetur in."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 2,
            "offer": {
                "ar": "aut",
                "en": "aut"
            },
            "code": "ipsum",
            "details": {
                "ar": "Qui consequatur adipisci omnis laboriosam velit. Voluptatem autem nam voluptatibus facere eos quis. Quia ratione beatae et nihil ex non et corrupti.",
                "en": "Reiciendis explicabo ab nihil. Consequatur autem repellendus quia corporis neque ipsam sit. Est fuga doloribus modi atque ea."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 3,
            "offer": {
                "ar": "quod",
                "en": "deserunt"
            },
            "code": "iure",
            "details": {
                "ar": "Ad animi magni est autem veritatis. Ducimus culpa dignissimos recusandae at. Molestiae fugit dolores omnis.",
                "en": "Ut magni non at molestias. Quia quia a ut optio qui ut dignissimos. Ducimus et quaerat est earum dolor sed laboriosam."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 4,
            "offer": {
                "ar": "impedit",
                "en": "dolores"
            },
            "code": "ex",
            "details": {
                "ar": "Minima consequatur illo quia sint voluptate voluptatibus sequi. Accusantium consequatur officia odio aut repellendus. Autem ut nobis ut et nisi nihil qui.",
                "en": "Velit eos aspernatur ullam fuga assumenda. Quaerat numquam eaque debitis repellendus sunt. Quasi nesciunt velit voluptatum ducimus dolores et."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 5,
            "offer": {
                "ar": "illo",
                "en": "consectetur"
            },
            "code": "tempora",
            "details": {
                "ar": "Est eius et libero pariatur enim excepturi quis ad. Veniam nemo et est ullam cumque laborum sunt. Exercitationem ullam est omnis sequi harum.",
                "en": "Delectus molestiae voluptates ut id. Similique pariatur ea facilis perspiciatis illum ratione accusantium et. Incidunt id aut id."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 6,
            "offer": {
                "ar": "molestias",
                "en": "ut"
            },
            "code": "tempore",
            "details": {
                "ar": "Ut reprehenderit nisi ut. Molestiae soluta cupiditate sit expedita dolores. Quasi natus qui magnam cumque illum.",
                "en": "Natus enim voluptas similique est sit repellat et. Dolor fugiat ut debitis dolorem non ab. Doloribus iusto eos expedita enim aut nesciunt."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 7,
            "offer": {
                "ar": "similique",
                "en": "et"
            },
            "code": "minima",
            "details": {
                "ar": "Modi tenetur ducimus est dolor totam. Dolor porro odio optio laborum dolor cum ut. Sapiente laudantium nemo maxime consequatur impedit qui.",
                "en": "Et ipsam sed doloribus doloribus magni voluptatem. Ad saepe repudiandae rerum necessitatibus. Enim rerum enim sequi et deserunt perspiciatis facilis."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 8,
            "offer": {
                "ar": "et",
                "en": "exercitationem"
            },
            "code": "quia",
            "details": {
                "ar": "Autem voluptate necessitatibus dignissimos laudantium pariatur. Assumenda quasi ut sit in mollitia. Temporibus rerum hic rerum rerum illum et id.",
                "en": "Similique fugit minima molestias nulla harum cumque voluptas. Consequatur omnis et nihil distinctio voluptatum rerum velit dolores. Aut eveniet qui occaecati animi sunt temporibus occaecati."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 9,
            "offer": {
                "ar": "expedita",
                "en": "et"
            },
            "code": "deleniti",
            "details": {
                "ar": "Voluptas soluta qui natus enim commodi. Molestias illo facere dolorum est voluptatem cupiditate ut accusantium. Consequatur dolor eligendi inventore quo consequuntur vitae.",
                "en": "Sequi ut eius maiores. Modi alias qui quaerat quia quia laboriosam. Voluptatum sapiente a ipsa aspernatur incidunt omnis."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 10,
            "offer": {
                "ar": "maiores",
                "en": "deleniti"
            },
            "code": "quisquam",
            "details": {
                "ar": "Est hic sit rem ipsam. Sed eius earum voluptatem est provident non accusantium. Sunt rerum at dolorem et perferendis deserunt.",
                "en": "Quod nulla eligendi in ratione. Veniam harum quia rerum blanditiis excepturi et cupiditate. Voluptas magni consectetur exercitationem accusantium esse dolore."
            },
            "user_id": 1,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 11,
            "offer": {
                "ar": "vel",
                "en": "totam"
            },
            "code": "et",
            "details": {
                "ar": "Eligendi fugit in repellendus id beatae molestiae. Dolore repudiandae eum unde molestiae ut cupiditate sit. Veritatis maiores eligendi ducimus hic quia et.",
                "en": "Eveniet possimus cum ipsam. Laudantium ullam optio quam molestiae ullam. Et doloremque repellendus eum rerum exercitationem ipsam."
            },
            "user_id": 2,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 12,
            "offer": {
                "ar": "id",
                "en": "rerum"
            },
            "code": "et",
            "details": {
                "ar": "Dolores numquam totam officia omnis sit eos dignissimos cum. Ipsa quasi velit blanditiis necessitatibus sunt. Placeat ratione corporis sit vitae.",
                "en": "Est ex eligendi quam minima. Labore laborum aut eaque ut facere. Sapiente illo optio ducimus labore."
            },
            "user_id": 2,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 13,
            "offer": {
                "ar": "perspiciatis",
                "en": "aut"
            },
            "code": "rerum",
            "details": {
                "ar": "Ut harum at necessitatibus iure ab inventore. Nobis praesentium est voluptas nihil quo. Ex sequi similique eius in et sed qui fugit.",
                "en": "Tenetur quia architecto molestiae perferendis qui fugit unde. Sit corporis rerum esse reiciendis deleniti minus deserunt sed. Aut voluptatibus architecto quas voluptatum omnis fuga voluptates."
            },
            "user_id": 2,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 14,
            "offer": {
                "ar": "eum",
                "en": "laboriosam"
            },
            "code": "sint",
            "details": {
                "ar": "Corrupti possimus quisquam omnis est ut voluptatum exercitationem facere. Non commodi recusandae praesentium non impedit labore aut. Mollitia enim commodi qui voluptas sapiente.",
                "en": "Quas ea a sit dolores nobis fuga. Velit eius quia voluptatem illum quam sunt necessitatibus. Cupiditate modi voluptate voluptatem et optio alias."
            },
            "user_id": 2,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        },
        {
            "id": 15,
            "offer": {
                "ar": "possimus",
                "en": "nesciunt"
            },
            "code": "eum",
            "details": {
                "ar": "Consequatur dolor quia quia eos sunt. Quaerat laboriosam laborum dolore fugiat ducimus est sed. Sequi aut fugit reprehenderit quam aliquid et et.",
                "en": "Et quia et vel omnis. Facilis alias esse quia. Sed ipsa ad libero suscipit nemo magni."
            },
            "user_id": 2,
            "created_at": "2022-12-26T11:03:39.000000Z",
            "updated_at": "2022-12-26T11:03:39.000000Z"
        }
    ],
    "links": {
        "first": "https://api.couponami.test/api/coupons?page=1",
        "last": "https://api.couponami.test/api/coupons?page=7",
        "prev": null,
        "next": "https://api.couponami.test/api/coupons?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 7,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "https://api.couponami.test/api/coupons?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "https://api.couponami.test/api/coupons?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "https://api.couponami.test/api/coupons?page=3",
                "label": "3",
                "active": false
            },
            {
                "url": "https://api.couponami.test/api/coupons?page=4",
                "label": "4",
                "active": false
            },
            {
                "url": "https://api.couponami.test/api/coupons?page=5",
                "label": "5",
                "active": false
            },
            {
                "url": "https://api.couponami.test/api/coupons?page=6",
                "label": "6",
                "active": false
            },
            {
                "url": "https://api.couponami.test/api/coupons?page=7",
                "label": "7",
                "active": false
            },
            {
                "url": "https://api.couponami.test/api/coupons?page=2",
                "label": "Next »",
                "active": false
            }
        ],
        "path": "https://api.couponami.test/api/coupons",
        "per_page": 15,
        "to": 15,
        "total": 100
    }
}

The current documentation requires that I have the ID of the object in order to implement the relationController and that I would have to make two calls to backend. is there anyway around that with Orion ?

Thanks in a advance