Php Laravel仅从关系中附加一个属性
我正在尝试向我的Laravel 7 API模型添加一个额外字段: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
类层扩展模型{
受保护的$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…
如果您不想看到类别
对象,您将不得不使用连接查询,而不是使用操作系统使用附录
工作正常。非常感谢。