我正在构建一个涉及跟踪不同类型潜在客户的Laravel应用程序。例如,再融资线索和购买线索。
由于引导分享了很多信息和功能,但不是全部,我的想法是创建一个Lead
类,它扩展了Laravel的Model
类,然后是RefinanceLead
类,它扩展了Lead
类。
所以我有:
class Lead extends Model
{
// shared lead stuff
}
class RefinanceLead extends Lead
{
// stuff specific to refinance leads
}
我的问题是:
leads
表和refinance_leads
表吗? leads
表中的任何内容?我在通过文档回答这个问题时遇到了麻烦,但如果我错过了解释的地方,请告诉我。感谢。
答案 0 :(得分:15)
1。是的,在父模型中拥有所有常用功能是完全合理的。
2. 基本上每个Eloquent模型都会处理protected $table
变量中定义的自己的表中的数据。您可以覆盖父变量,为所有不同的子模型设置单独的表。 Laravel Table Names
例如,如果您在 RefinanceLead 实例上使用getId()
方法,则会从 refinance_lead 表中返回 id 。如果您在 PurchadeLead 实例上使用它,它将从 purchade_table
class Lead extends Model
{
public function getId() {
return $this->id;
}
}
class RefinanceLead extends Lead
{
protected $table = 'refinance_leads';
}
class PurchaseLead extends Lead
{
protected $table = 'purchase_leads';
}
3。我不知道您的具体需求是什么,但一般情况下我会建议将Lead类抽象化,因此您不会为其关联表。仅用于分隔常见功能,关系等... 当然,正如评论中所建议的那样,实现界面总是一个好主意。
abstract class Lead extends Model implements LeadContract
{
// class body
}