Laravel关系返回父母两次

时间:2018-05-26 15:40:14

标签: laravel model relationship

我有两个模型和一对一关系如下:

class Property extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }
}

class User extends Authenticatable
{
    public function property()
    {
        return $this->hasOne(Property::class, 'user_id');
    }
}

如果我想从属性访问用户,我的用户数组的返回值为两次:

$property = Property::where('id', $id)->first();

return response()->json([
                'property' => $property,
                'user' => $property->user
            ], 201);

输出:

{
    "property":{
        "id":1,
        "name":"test",
        "user":{
            "id":1,
            "name":"arash"
        }
    },
    "user":{
        "id":1,
        "name":"arash"
    }
}

这里有什么?为什么属性中有第一个用户?

1 个答案:

答案 0 :(得分:1)

这是Laravel中序列化的工作原理 你可以在json中隐藏它

class Property extends Model
{
    protected $hidden = ['user'];

    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }
}