多个独特的morphMany关系Laravel 4

时间:2013-09-03 13:17:28

标签: polymorphism laravel laravel-4 polymorphic-associations eloquent

在Laravel 4中,Eloquent是否可以拥有一个与另一个模型具有两个或更多独特morphMany()关系的模型? (多晶型)

e.g。

class Application extends Eloquent {

    public function resume()
    {
        return $this->morphMany('Upload', 'uploadable');
    }    

    public function coverLetter()
    {
        return $this->morphMany('Upload', 'uploadable');
    }  

...

上面的代码无法正常工作,因为当我尝试检索其中任何一种关系时,会得到一个我不想要的上传模型。

$application->resume->file_name // this sometimes echos a coverLetter

1 个答案:

答案 0 :(得分:1)

看起来你误解了为什么应该使用多态关系。

这将是你的修复:

class Application extends Eloquent {

public function resume()
{
    return $this->hasMany('Resume');
}    

public function coverLetter()
{
    return $this->hasMany('CoverLetter');
}  

// ...

你不能同时具有多态性的原因是因为你根本无法分辨你应该得到哪一个。您的“可上传”可能是简报或简历,但您无法判断它们是否都被描述为可上传。你必须在模型中区分它们。 Laravel不是那么神奇!