隐藏在访问者中加载的额外关系

时间:2017-04-04 20:15:35

标签: php laravel laravel-5.3

我在访问者属性中加载关系:

public function getNameAttribute()
{
    return $this->someRelation->name . ' x ' . $this->otherRelation->name;
}

当通过Http响应发送数据时调用->toJson时,会包含这些关系中的数据,但我只想包含name属性。

一个解决方案可能只是将这些关系设置为hidden,但我不愿意,因为我担心如果我需要实际加载这些关系,它会回来咬我。

将模型转换为数组/ json时,如何避免这种“副作用”数据?

1 个答案:

答案 0 :(得分:1)

我没试过,但是从laravel docs你可以使用makeHidden()到临时隐藏属性(包括关系),即。

return $model->makeHidden(['someRelation', 'otherRelation'])->toJson();
// or
return $model->makeHidden('someRelation')->makeHidden('otherRelation')->toJson();