【发布时间】:2017-06-12 16:17:32
【问题描述】:
我有一个项目,其中使用 Eloquent 定义了许多模型。这在大多数情况下很简单,但我无法理解如何处理新案件。我将避免使用 laravel/eloquent 术语,以防我掩盖了问题。
我有一个名为Question 的表,其中包含id, QuestionTypeID, QuestionStatement 字段。
基于QuestionTypeID,需要实例化不同类别的问题,这可能会为其他表提取信息或在 PHP 代码中使用不同的业务逻辑。
所有这些问题类型都可以实现一个通用接口,例如:
interface Question {
int id;
string statement;
function ask($params);
// + CRUD stuff I suppose
}
如何处理不同的 Question 模型? Eloquent 模型是否天生就与特定的表相关联?
例如,我有一个 SQLQuestion(其中逻辑将简单地执行从某个查找表中提取的存储 SQL 语句并返回响应)和一个 TimeFrameQuestion(其逻辑需要调用某些 TimeFrame 模块)。
唯一可以从中提取的表 TimeFrameQuestion 是一般的 Question 表,因为它与任何其他表没有直接关系。
是否可以有 2 个模型同时查看 Question 表而没有 SQLQuestion 集合也包含所有 TimeFrameQuestion 类型的记录,反之亦然?
【问题讨论】:
-
在不知道
Question的其他关系类型的情况下很难回答。根据它的简单或复杂程度,QuestionInterface可能是一个好方法,然后您就有不同的Question模型,每个模型都有自己的雄辩模型,包含不同的信息。 -
@Scopey 为快速响应而欢呼。我已尝试在对问题的编辑中解决您的评论。
-
Eloquent 模型是否天生与特定表相关联? 不,不是,但是,它定义了关系.. 所以我从没想过改变
protected $tableon苍蝇..只是一个旁注,在php中你可以动态地将字段添加到类中..更不用说那些神奇的功能了..
标签: php laravel eloquent laravel-5.3