Laravel 在属性函数中引用它时追加子项

Laravel appends child when referencing it in attribute function

在laravel8.x。我试图在 getSeomthingAttribute() 方法中从相关模型访问数据。假设我想要一个包含所有孙子名字的数组,我的代码如下所示:

public function getGrandChildrenNamesAttribute() {
        $names = [];
        foreach ($this->child->children as $grandChild) {
                array_push($names, $grandChild->name);
        }

        return $names;
    }

现在,当我将 grandChildrenNames 属性附加到模型时,它还会附加整个 $child 属性。我像这样附加属性:

return Parent::find($id)->append('grand_children_names');

和returns像这样:

{
  name: "some name",
  age: 21,
  grand_children_names: [
    "name 1",
    "name 2",
    etc...
  ],
  child: {
    name: "child name"
    etc...
  },
}

如何在不附加 $child 的情况下附加 grand_children_names

我完全忘记了makeHidden()。 那是我的解决方案。我在调用父模型时做了以下操作:

return Parent::find($id)->append('grand_children_names')->makeHidden('child');