Когда вы вызываете $post->creator
, вы, по сути, вызываете $post->getRelation('creator')
через «магический метод».
Это важно, потому что это означает, что вы устанавливаете свойство для объекта, возвращаемогоgetRelation
метод, вы не обновляете отношение создателя по ссылке - поэтому при повторном вызове getRelation('creator')
возвращается исходное значение отношения.
Следовательно, для достижения того, что вы хотитедля этого необходимо перезаписать значение отношения creator
:
$posts->transform(function ($post) {
$post->title = 'Transformed';
$creator = $post->creator;
$creator->avatar = [
'path' => '/avatar/',
'file_name' => 'a.png'
];
$post->setRelation('creator', $creator); // or $post->creator = $creator;
});