Hubert Burdach
Hubert Burdach

Reputation: 91

Laravel's Eloquent pivot object

I have defined relation in my model:

public function positions() {
    return $this->belongsToMany('Position', 'users_positions')->withPivot('season');
}

Is it possible to display objects with pivot in cleaner way? For Example:

"positions": [
            {
                "id": 1,
                "name": "A",
                "pivot": {
                    "user_id": 1,
                    "position_id": 1,
                    "season": 2014
                }
            }
        ],

I would like to get:

"positions": [
            {
                "id": 1,
                "name": "A",
                "season": 2014
            }
        ],

Upvotes: 0

Views: 1117

Answers (1)

Jarek Tkaczyk
Jarek Tkaczyk

Reputation: 81187

Use accessor:

public function getSeasonAttribute()
{
   return ($this->pivot) ? $this->pivot->season : null;
}

Then you can access it just like other properties:

$position = $someModel->positions->first();
$position->season;

if you also need it in the toArray/toJson output, then use on you model:

protected $appends = ['season'];

Upvotes: 1

Related Questions