Могу ли я динамически назначить класс отношений Laravel Eloquent? - PullRequest
0 голосов
/ 02 мая 2018

Этот вопрос возникает из Как я могу преобразовать / привести родительский объект PHP к дочернему объекту?

В настоящее время у меня есть этот код:

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
}

class PageSlug extends Model {

    public function page()
    {
        $page = Page::find($this->hd_pag_ID)
        ->first();

        if (!$page instanceof Page) {
            return null;
        }

       switch ($page->layout_id) {
           case PageLayout::ARTICLE:
               return $this->hasOne(ArticlePage::class, 'category_id', 'hd_pag_ID');
           default:
               return $this->hasOne(Page::class, 'category_id', 'hd_pag_ID');
        }
    }
}

Но, как вы видите, теперь я сначала запрашиваю страницу, что нежелательно. Могу ли я изменить используемый класс, не запрашивая страницу отдельно?

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...