Php 如何处理Laravel中的模型继承?

Php 如何处理Laravel中的模型继承?,php,laravel,eloquent,laravel-5.3,Php,Laravel,Eloquent,Laravel 5.3,我有一个项目,在这个项目中,许多模型都是用雄辩的语言定义的。这在很大程度上是直截了当的,但我很难理解如何处理新案件。我将避免使用laravel/雄辩的术语,以防我只是模糊了问题 我有一个名为Question的表,其中包含字段id、QuestionTypeID、QuestionStatement 根据QuestionTypeID需要实例化不同的问题类别,这些问题可能会提取额外表的信息,或者在PHP代码中使用不同的业务逻辑 所有这些问题类型都可以实现一个公共接口,如: 接口问题{ int-id; 字

我有一个项目,在这个项目中,许多模型都是用雄辩的语言定义的。这在很大程度上是直截了当的,但我很难理解如何处理新案件。我将避免使用laravel/雄辩的术语,以防我只是模糊了问题

我有一个名为
Question
的表,其中包含字段
id、QuestionTypeID、QuestionStatement

根据
QuestionTypeID
需要实例化不同的问题类别,这些问题可能会提取额外表的信息,或者在PHP代码中使用不同的业务逻辑

所有这些问题类型都可以实现一个公共接口,如:

接口问题{
int-id;
字符串语句;
函数ask($params);
//我想是积垢吧
}
我如何处理不同的问题模型?雄辩的模型是否与特定的表格没有内在联系

例如,我有一个
SQLQuestion
(逻辑只需执行从某个查找表中提取的存储SQL语句并返回响应)和一个
TimeFrameQuestion
(其逻辑需要调用某些TimeFrame模块)

唯一可以从中提取的表
TimeFrameQuestion
是general
Question
表,因为它与任何其他表都没有直接关系


有没有可能让两个模型都查看
Question
表,而没有
SQLQuestion
集合也包含
TimeFrameQuestion
类型的所有记录,反之亦然?

我意识到我可能是从错误的方向处理问题。我可能需要控制器继承,而不是某种模型继承

我给了我的问题模型一个由API调用的
handle
函数,该函数基于模型的
QuestionType
列实例化一个新控制器,调用
ask
函数并返回结果:

class Question extends Model
{
    protected $table = 'Question';

    protected $fillable = [
        'Statement',
        'QuestionType'
    ];

    public function handle($parameters) {
        $class = '\\App\\Modules\\QAndA\\' . $this->QuestionType . 'Controller';
        $controller = new $class;

        return $controller->ask($this->id, $parameters);
    }
}

这些控制器(例如,
SQLQuestionController
TimeframeQuestionController
)所有这些都扩展了一个
QuestionController
,它定义了各种共享功能,并且各个控制器覆盖了它们所需要的任何功能。

如果不知道一个
问题所期望的其他关系类型,就有点难以回答。根据问题的简单或复杂程度,一个
QuestionInterface
可能是一个很好的方法,然后您会有不同的
Question
模型,每个模型都有自己的雄辩模型,包含不同的信息。@Scopey为快速响应欢呼。我试着在问题的编辑中回应你的评论。雄辩的模型是否与特定的表格没有内在联系?不,它不是,但是,它定义了关系。。所以我从来没有想过在飞行中改变。。另外,在php中,您可以向类动态添加字段。。更不用说那些神奇的功能了。。