Laravel 根据类型获取模型的实例

Laravel 根据类型获取模型的实例,laravel,design-patterns,factory-method,Laravel,Design Patterns,Factory Method,我有两种注释:ReferenceNote和TaskNote。他们都是从BaseNote继承来的 创建新便笺时,我会在请求中键入,并根据该类型创建相应的模型 但是,当我需要通过id获取注释时,如何获取相应的模型 我当前的解决方案: $base_note = BaseNote::find($id); $note = $note_factory->getNote($base_note); 工厂内: function getNote(BaseNote $base_note) { if

我有两种注释: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
    }
}

有更好的方法吗?

您真的需要混凝土类型吗?超类还不够吗?每个类都有自己的属性,而超类没有。