Laravel:模型中的动态关系

Laravel: Dynamic Relationship in Model

我的内容模型有一个动态关系。我使用内容模型作为我的 post 类型,数据库中的每个类型都有一个模型值,该值重定向到一个模型,该模型是内容类型的实际内容,稍后可能会使用 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

我还没有弄清楚为什么这不起作用,也没有想到我可以实现同样目标的替代方案。如果不清楚,我可以提供更多详细信息。提前致谢!

UPDATE(temporary/permanent 我想出的解决方案) 我删除了关系并将其替换为这个;

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

如果我对你的问题的理解正确,你的 contents table 是多态的,如果还没有,应该同时具有 foreign_idforeign_type (可以用 content_idcontent_type 代替)。然后在你的内容模型中你应该有以下代码:

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

(temporary/permanent 我想出的解决方案) 我删除了关系并将其替换为这个;

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