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');}。