我有 3 个模型,文章,建筑,人物。
这些模型需要以几种方式相互引用。例如,建筑物需要能够引用 Person 的集合,例如 $building->architects()、$building->owners(),一篇文章可能会使用 $article->authors() 引用 Person 的集合,而 Person 可能会引用集合像 $person->owned_buildings() 这样的建筑物
每个模型都应该有一个类似“references”的函数来获取混合模型的集合。
我认为这应该可以通过以下方式实现:
class Article extends Eloquent {
public function referenceable()
{
return $this->morphTo();
}
public function authors()
{
return $this->morphMany('Person', 'referenceable');
}
}
class Building extends Eloquent {
public function referenceable()
{
return $this->morphTo();
}
public function architects()
{
return $this->morphMany('Person', 'referenceable');
}
}
class Person extends Eloquent {
public function referenceable()
{
return $this->morphTo();
}
public function owned_buildings()
{
return $this->morphMany('Building', 'referenceable');
}
}
所以问题是数据透视表会是什么样子?