Php 如何创建一个Laravel多态关系,其中每种类型具有不同的多样性级别
好的,我试着在Laravel中创建一个多态关系,它有四种不同的类型。我的问题是,其中两个级别是一对多,另外两个级别是多对多。以下是我目前掌握的情况:Php 如何创建一个Laravel多态关系,其中每种类型具有不同的多样性级别,php,laravel,eloquent,polymorphism,relationship,Php,Laravel,Eloquent,Polymorphism,Relationship,好的,我试着在Laravel中创建一个多态关系,它有四种不同的类型。我的问题是,其中两个级别是一对多,另外两个级别是多对多。以下是我目前掌握的情况: class Holiday extends AbstractModel { protected $table = 'holidays'; protected $fillable = [ 'scope_id', 'scope_type', 'main_date', 'alt_date', 'comp_date', 'name', 'di
class Holiday extends AbstractModel {
protected $table = 'holidays';
protected $fillable = [
'scope_id', 'scope_type', 'main_date', 'alt_date', 'comp_date', 'name', 'disabled'
];
public function scope() {
return $this->morphTo();
}
}
class Country extends AbstractModel {
protected $table = 'countries';
protected $fillable = ['name', 'iso_code', 'disabled'];
public function holidays() {
return $this->morphMany("App\holidays", "scope");
}
}
class CountrySubdivision extends AbstractModel {
protected $table = 'countries_subdivisions';
protected $fillable = ['name', 'iso_code', 'countries_id', 'disabled'];
public function holidays() {
return $this->morphMany("App\holidays", "scope");
}
}
这对于前两个级别(一对多关系)是有好处的。然而,我的问题在于最后两个层次,这两个层次是多对多的。以下是我的模型:
class Site extends AbstractModel {
protected $fillable = ['name', 'code', 'division', 'absence', 'unpaid'];
public function holidays() {
return $this->morphToMany("App\Holiday", "scope");
}
}
class Employee extends AbstractModel {
protected $fillable = [
'name', 'code', 'division', 'absence', 'unpaid'
];
public function holidays() {
return $this->morphToMany("App\Holiday", "scope");
}
}
我的问题是,当定义关系的倒数时。morphTo
方法用于一对多关系。但是,对于多对多,我需要使用morphedByMany()
方法。但是,我不知道如何对同一关系使用两个不同的限定符
有人知道如何做到这一点吗?我想你忽略了这样一个事实:你需要为
站点
和员工
建立独立的morphedbyman()
关系。scope()
方法不会干扰morphedbyman()
调用吗?我不明白为什么。你试过了吗?