我在 Illuminate 中有一个对象,它的关系可以根据主对象的属性返回不同的对象
public function relation(){
switch($this->type){
case "type_1":
return $this->belongsTo('\Models\Type1', 'idElement');
break;
case "type_2":
return $this->belongsTo('\Models\Type2', 'idElement');
break;
default:
return null;
}
}
当执行“默认”部分时,这会产生“关系方法必须返回 Illuminate\Database\Eloquent\Relations\Relation 类型的对象”的错误。
我也不能实例化 anew Illuminate\Database\Eloquent\Relations\Relation()
因为它是一个抽象类。
我可以创建一个空表并返回与该空表的关系,该空表将始终返回一个空值,但这不是解决方案。
如何在默认选项中返回空关系?
更新:
我已将其更改为使用多态关系,但现在的问题是:如何将多态关系设置为可选关系?
Relation::morphMap([
'type_1' => \App\Models\Type1::class,
'type_2' => \App\Models\Type2::class
]);
....
public function relation(){
return $this->morphTo(null, 'type', 'idElement');
}