【发布时间】:2018-05-02 16:01:32
【问题描述】:
原因
我有一个带有包含 slug 的表的旧系统。
当这些记录匹配时,它代表某种具有布局 ID 的页面。
因为这些页面可能有不同的资源需求,这取决于可以连接表格的布局 ID。
我使用 Laravel 的 Eloquent 模型。
我想要的是拥有一个包含特定布局关系的子模型。
class Page extends Model {
// relation 1, 2, 3 that are always present
}
class ArticlePage extends Page {
// relation 4 and 5, that are only present on an ArticlePage
}
但是在我的控制器中,为了知道我需要哪种布局,我已经必须查询:
网址:/{slug}
$page = Slug::where('slug', $slug)->page;
if ($page->layout_id === 6) {
//transform $page (Page) to an ArticlePage
}
因此,我得到了一个 Page 的实例,但我想将其转换或转换为 ArticlePage 的实例以加载它的附加关系。我怎样才能做到这一点?
【问题讨论】:
-
你可能想看看多态关系:laravel.com/docs/5.6/…