Php Laravel仅从关系中附加一个属性

Php Laravel仅从关系中附加一个属性,php,laravel,eloquent,Php,Laravel,Eloquent,我正在尝试向我的Laravel 7 API模型添加一个额外字段: 类层扩展模型{ 受保护的$fillable=['name','filename','status','category_id']; 受保护的$appends=['category_name']; 公共函数getCategoryNameAttribute() { 返回$this->category->name; } 公共职能类别() { 返回$this->belongsTo('App\LayerCategory','category

我正在尝试向我的Laravel 7 API模型添加一个额外字段:

类层扩展模型{
受保护的$fillable=['name','filename','status','category_id'];
受保护的$appends=['category_name'];
公共函数getCategoryNameAttribute()
{
返回$this->category->name;
}
公共职能类别()
{
返回$this->belongsTo('App\LayerCategory','category_id');
}
}
我的控制器:

。。。。。
公共职能指数()
{
返回层::orderBy('name','asc')->paginate();
}
.....
我期望得到以下回应:

{
  "id": 1,
  "category_id": 1,
  "name": "My Layer",
  "filename": "file_name.zip",
  "status": true,
  "category_name": "My category name"
}
但我收到:

{
  "id": 1,
  "category_id": 1,
  "name": "My Layer",
  "filename": "file_name.zip",
  "status": true,
  "category_name": "My category name",
  "category": [
    "id": 1,
    "name": "My category name",
    "status": true
  ]
}
如何仅返回类别名称?
PS:我也尝试了使用资源。

由于您急于加载
类别
关系以获取
类别名称
,因此需要添加逻辑以隐藏JSON响应中的
类别。这可以使用序列化上的隐藏属性完成:

protected $hidden = ['category'];

您可以阅读了解更多信息。

什么代码返回这些对象?@Christopher Hubert,我在问题中添加了控制器方法。谢谢您正在使用此代码懒洋洋地加载类别关系。
$this->category…
如果您不想看到
类别
对象,您将不得不使用连接查询,而不是使用操作系统使用
附录
工作正常。非常感谢。