->withPivot('activity_id','user_id')
не требуется. Эти поля появятся на вашем объекте отношений, несмотря ни на что. Что касается ресурса, я думаю, что вы можете сделать следующее:
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
// If the relation 'members' is loaded, get an array of user ids otherwise, return null
'attendees' => $this->relationLoaded('members') ? $this->members->pluck('pivot.user_id')->unique()->all() : null
];
}
Основная проблема заключается в том, что отношение «многие ко многим» означает, что существует более 1 пивота. С этим решением ваш объект будет выглядеть следующим образом.
{
id: 3,
title: 'A Title',
attendees: [
1,
2,
3,
],
}
Если вы хотите, чтобы идентификаторы были объединены в одну строку, как в вашем комментарии foreach
, замените all()
на join(' ')
// If the relation 'members' is loaded, get an string of user ids otherwise, return null
'attendees' => $this->relationLoaded('members') ? $this->members->pluck('pivot.user_id')->unique()->join(' ') : null
{
id: 3,
title: 'A Title',
attendees: '1 2 3',
}