防止关系对象和关系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');
    }
}

这两个"hasOne"模型没有反向的"belongsTo"定义。这是因为那些表(sitesprocess_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"answers"site"都有吗?我该如何预防呢?

DefectReport模型中添加:

protected $hidden = array('site_id', 'process_code_id');

$hidden属性由Eloquent检查,以识别在Object序列化时不应该返回的任何属性。