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_id
和 foreign_type
(可以用 content_id
和 content_type
代替)。然后在你的内容模型中你应该有以下代码:
public function contents()
{
return $this->morphTo();
}
(temporary/permanent 我想出的解决方案)
我删除了关系并将其替换为这个;
public function getContentsAttribute() {
$items = $this->contents_type::with('user')->get();
return $items;
}
我的内容模型有一个动态关系。我使用内容模型作为我的 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_id
和 foreign_type
(可以用 content_id
和 content_type
代替)。然后在你的内容模型中你应该有以下代码:
public function contents()
{
return $this->morphTo();
}
(temporary/permanent 我想出的解决方案) 我删除了关系并将其替换为这个;
public function getContentsAttribute() {
$items = $this->contents_type::with('user')->get();
return $items;
}