在 Laravel 中设置 OneToMany 关系,但在关系中存在异常
Set OneToMany relation in Laravel with exception in relation
我创建了具有 OneToMany 关系的表。两个表是 Malls
和 Shops
。每个 Mall
可以有多个 Shop
,但问题是每个 Shop
不一定属于一个 Mall
。它可以是一个独立的商店。
当我调用 App\Shop::first()->mall
时,如果商店不属于 Mall
,它会 return null
还是抛出异常或错误?
Eloquent怎么可能?
当您访问 App\Shop::first()->mall 时,Eloquent 尝试加载相关的 mall 模型使用存储在 mall_id 属性 中的值 Shop。如果它包含一个值,则加载相关对象(如果存在)。如果不是,则返回 NULL。如果它不包含任何值,则再次返回 NULL,因为不存在具有此类 ID 的相关记录。
了解一下你的情况,你有Mall Model和Shop Model。一个Mall可能有多个店铺,而Shop可能属于也可能不属于mall
这里是商城模型的代码
public function shop() {
return $this->hasMany(Shop::class);
}
这是商店模型的代码
public function mall(){
return $this->belongsTo(Mall::class);
}
这将满足您的要求。只要商店不属于任何商场,它就会 return null 而不是错误。
我创建了具有 OneToMany 关系的表。两个表是 Malls
和 Shops
。每个 Mall
可以有多个 Shop
,但问题是每个 Shop
不一定属于一个 Mall
。它可以是一个独立的商店。
当我调用 App\Shop::first()->mall
时,如果商店不属于 Mall
,它会 return null
还是抛出异常或错误?
Eloquent怎么可能?
当您访问 App\Shop::first()->mall 时,Eloquent 尝试加载相关的 mall 模型使用存储在 mall_id 属性 中的值 Shop。如果它包含一个值,则加载相关对象(如果存在)。如果不是,则返回 NULL。如果它不包含任何值,则再次返回 NULL,因为不存在具有此类 ID 的相关记录。
了解一下你的情况,你有Mall Model和Shop Model。一个Mall可能有多个店铺,而Shop可能属于也可能不属于mall
这里是商城模型的代码
public function shop() {
return $this->hasMany(Shop::class);
}
这是商店模型的代码
public function mall(){
return $this->belongsTo(Mall::class);
}
这将满足您的要求。只要商店不属于任何商场,它就会 return null 而不是错误。