我正在尝试在 Laravel 4 中设置多态关系,以便我可以拥有一个 Image 类来处理与上传、取消链接等相关的所有内容,然后让多个不同的模型使用它。没关系,直到我尝试从同一个模型创建多个链接。
例如,我目前有这样的事情:
模型/Image.php
class Image extends Eloquent {
public function of() { return $this->morphTo(); }
}
模型/Person.php
class Person extends Eloquent {
public function mugshot() { return $this->morphOne('Image', 'of'); }
public function photos() { return $this->morphMany('Image', 'of'); }
}
模型/Place.php
class Place extends Eloquent {
public function photos() { return $this->morphMany('Image', 'of'); }
}
在这里,一个 Person 可以上传一个mugshot
和多个photos
,而一个 Place 可以有多个photos
。问题是,当我mugshot
在 Person 上创建一个时,它会将其保存到images
数据库中的表中:
id: 1
of_id: 1
of_type: Person
它不存储它是 amugshot
而不是 a的事实photo
,所以当我去检索它时,$person->mugshot
有时可能会返回一个,$person->photos
反之亦然。
是否有 (a) 比在同一模型上创建 2 个链接更好的方法,或者 (b) 一种实际使这种方式起作用的方法?