Laravel 根据类型获取模型的实例
我有两种注释:ReferenceNote和TaskNote。他们都是从BaseNote继承来的 创建新便笺时,我会在请求中键入,并根据该类型创建相应的模型 但是,当我需要通过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
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
}
}
有更好的方法吗?您真的需要混凝土类型吗?超类还不够吗?每个类都有自己的属性,而超类没有。