Laravel 拉威尔关系返回父项两次

Laravel 拉威尔关系返回父项两次,laravel,model,relationship,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->

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

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"
    }
}

这是怎么回事?为什么属性中有第一个用户?

这就是在Laravel中序列化的工作方式。
您可以将其隐藏在json中

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

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

您能否显示a)如何查询
$属性
b)更新了
属性
模型问题。。。检查第一个类中的
属性
model@devkYou可能希望这样做:
['Property'=>$Property,'user'=>$Property->user()->first()]
$hidden
属性也可以工作,但可能会在以后对您造成一些意外的副作用。我可以用这种方法隐藏一个财产。。。但为什么模型中还有第二个数组呢?它只是模型中的公共函数user(){return$this->belongsTo(user::class,'user_id');}。