打开模型属性不起作用 - laravel 4

时间:2015-04-12 15:33:54

标签: php laravel-4

我今天遇到了一个奇怪的问题。 我有一个非常复杂的数据库,关系很多。 在我的模型上,我得到了以下功能:

public function resource(){
    dd($this->getAttributes());
    switch($this->content_type){
        case Content::TYPE_TASKLIST:
            return $this->belongsTo('Tasklist', 'content_id');
        case Content::TYPE_FEEDBACK:
            return $this->belongsTo('Feedback', 'content_id');
        case Content::TYPE_SURVEY:
            return $this->belongsTo('Survey', 'content_id');
        case Content::TYPE_MEMO:
            return $this->belongsTo('Memo', 'content_id');
        case Content::TYPE_GEAR:
            return $this->belongsTo('Gear', 'content_id');
    }
    return $this->belongsTo('Resource', 'content_id');
}

这个功能必须改变关系,并给我一个好的,以获得正确的信息。 我检查了列名称的千倍,但我无法开关。

$ this-> content_type始终为null,因此不会更改关系。 我尝试了很多。正如你所看到的,我dd()模型属性,但它只返回一个空数组。

我不明白为什么这个功能不起作用。我得到的所有其他现实,直到这些差异类型的资源是好的。我得到了有关资源ID和内容类型的详细信息,但根本不起作用。

有人知道为什么?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为你试图实现多态关系和Laravel有一种优雅的方式来做到这一点。

有关详细信息,请参阅http://laravel.com/docs/5.0/eloquent#polymorphic-relations

此外,请确保您具有已加载数据的模型实例,以便能够填充属性。否则,它就像你所说的那样是空的。