Komail Fayazbakhsh
Komail Fayazbakhsh

Reputation: 384

how to get records with its related data in intermediate table

I have two model, Category and Brand with many to many relation

in Category model

public function brands()
    {
        return $this->belongsToMany(Brand::class, 'brand_category', 'category_id', 'brand_id');
    }

and in brand model

    public function categories()
    {
        return $this->belongsToMany(Category::class, 'brand_category','brand_id','category_id' );
    }

how can i get brands with specific category id like json below

{
    "data": [
        {
            "brand_id": 1,
            "name": "Sony",
            "description": null,
            "logo": null,
            "is_active": true,
            "created_at": "2020-04-08 15:19:44",
            "updated_at": "2020-04-08 15:19:44",
            "deleted_at": null,
            "pivot": {
                "category_id": 1,
                "brand_id": 1
            }
        },
        {
            "brand_id": 2,
            "name": "Lg",
            "description": null,
            "logo": null,
            "is_active": true,
            "created_at": "2020-04-08 15:19:44",
            "updated_at": "2020-04-08 15:19:44",
            "deleted_at": null,
            "pivot": {
                "category_id": 1,
                "brand_id": 2
            }
        }
    ],
    "success": true,
    "error": {
        "code": 200,
        "data": []
    },
    "message": ""
}

i want to find a way without changing relations in models by wherePivot...

Upvotes: 0

Views: 160

Answers (1)

Andy Song
Andy Song

Reputation: 4684

this should do.

return Category::find($categoryId)->brands;

Upvotes: 1

Related Questions