Получить экземпляр модели в зависимости от типа - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть два вида заметок: ReferenceNote и TaskNote. Они оба унаследованы от BaseNote.

Когда я создаю новую заметку, в запросе вводится текст, и в зависимости от этого типа я создаю соответствующую модель.

Но как я могу получить соответствующую модель, когда мне нужно получить заметку по id?

Мое текущее решение:

$base_note = BaseNote::find($id);

$note = $note_factory->getNote($base_note);

На фабрике:

function getNote(BaseNote $base_note) {
    if ($base_note->type === self::REFERENCE_NOTE_TYPE) {
        $note = new ReferenceNote($base_note->getAttributes());
        //logic of adding additional attributes for reference note
    } else {
        $note = new TaskNote($base_note->getAttributes());
        //logic of adding additional attributes for task note
    }
}

Есть ли лучший способ сделать это?

...