防止关系对象和关系 id 与父模型一起返回
Prevent both relationship object AND relation id from being returned with parent model
我有一个模型DefectReport
:
class DefectReport extends Model
{
public function site()
{
return $this->hasOne(Site::class, 'id', 'site_id');
}
public function processCode()
{
return $this->hasOne(ProcessCode::class, 'id', 'process_code_id');
}
}
那 2 个 "hasOne" 模型没有在其中定义逆 "belongsTo"。这是因为那些表(sites
和 process_codes
)不知道缺陷报告是什么。
当我从数据库中检索 DefectReport
的实例时,我得到了关系的 "id" 列以及关系对象。有什么方法可以只获取关系对象吗?
例如,当我调用:
return \App\DefectReport::with(['site', 'processCode'])->findOrFail(1);
我得到以下 JSON:
{
"id":1,
"site_id":1,
"process_code_id":1,
...other fields...
"created_at":"2015-07-17 19:51:45",
"updated_at":"2015-07-17 19:51:45",
"site": {
"id":1,
"location_code":"1",
"location_desc":"test",
"created_at":"2015-07-17 19:51:45",
"updated_at":"2015-07-17 19:51:45"
},
"process_code": {
"id":1,
"code":"999",
"description":"some process code",
"created_at":"2015-07-17 19:51:45",
"updated_at":"2015-07-17 19:51:45"
}
}
注意到 "site_id" 和 "site" 都存在了吗?我怎样才能避免这种情况?
在您的 DefectReport 模型中添加:
protected $hidden = array('site_id', 'process_code_id');
$hidden 属性由 Eloquent 检查以确定序列化对象时不应返回的任何属性。
我有一个模型DefectReport
:
class DefectReport extends Model
{
public function site()
{
return $this->hasOne(Site::class, 'id', 'site_id');
}
public function processCode()
{
return $this->hasOne(ProcessCode::class, 'id', 'process_code_id');
}
}
那 2 个 "hasOne" 模型没有在其中定义逆 "belongsTo"。这是因为那些表(sites
和 process_codes
)不知道缺陷报告是什么。
当我从数据库中检索 DefectReport
的实例时,我得到了关系的 "id" 列以及关系对象。有什么方法可以只获取关系对象吗?
例如,当我调用:
return \App\DefectReport::with(['site', 'processCode'])->findOrFail(1);
我得到以下 JSON:
{
"id":1,
"site_id":1,
"process_code_id":1,
...other fields...
"created_at":"2015-07-17 19:51:45",
"updated_at":"2015-07-17 19:51:45",
"site": {
"id":1,
"location_code":"1",
"location_desc":"test",
"created_at":"2015-07-17 19:51:45",
"updated_at":"2015-07-17 19:51:45"
},
"process_code": {
"id":1,
"code":"999",
"description":"some process code",
"created_at":"2015-07-17 19:51:45",
"updated_at":"2015-07-17 19:51:45"
}
}
注意到 "site_id" 和 "site" 都存在了吗?我怎样才能避免这种情况?
在您的 DefectReport 模型中添加:
protected $hidden = array('site_id', 'process_code_id');
$hidden 属性由 Eloquent 检查以确定序列化对象时不应返回的任何属性。