Laravel:模型中的动态关系

时间:2016-07-02 01:24:56

标签: php laravel eloquent relationship eager-loading

我的内容模型之间存在关系,这种关系是动态的。我正在使用内容模型作为我的帖子类型,并且每个数据库都有一个模型值,该模型值重定向到模型,该模型是内容类型的实际内容,可能稍后使用composer包安装。

public function contents() {
        return $this->hasMany($this->model);
    }

在我的视图中使用此关系时,它可以正常工作

$type->contents

但是当我想在我的控制器中加载这种关系时;

$types = Content::with('contents')->get();

我收到错误

FatalThrowableError in Model.php line 844: Class name must be a valid object or a string

我还没弄清楚为什么这不起作用或想到替代方案我怎么能达到同样的目的。如果不清楚,我可以提供更多细节。提前谢谢!

更新(我提出的临时/永久解决方案) 我删除了关系并将其替换为此;

public function getContentsAttribute() {
         $items = $this->contents_type::with('user')->get();
         return $items;
    }

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,那么您的contents表格就是多态的,如果它还没有,则应该同时拥有foreign_idforeign_type(可以替换)使用content_idcontent_type)。然后在您的内容模型中,您应该具有以下代码:

public function contents()
{
    return $this->morphTo();
}

答案 1 :(得分:0)

(我提出的临时/永久解决方案) 我删除了关系并将其替换为此;

public function getContentsAttribute() {
         $items = $this->contents_type::with('user')->get();
         return $items;
    }