gpt4 book ai didi

laravel - 在 Laravel 中扩展 Eloquent 模型(使用不同的表)

转载 作者:行者123 更新时间:2023-12-04 01:53:55 25 4
gpt4 key购买 nike

我正在构建一个涉及跟踪不同类型潜在客户的 Laravel 应用程序。比如有再融资线索采购线索 .

由于线索共享很多信息和功能,但不是全部,我的想法是创建一个 Lead类,它扩展了 Laravel 的 Model类,然后是 RefinanceLead类,它扩展了 Lead类(class)。

所以我有:

class Lead extends Model
{
// shared lead stuff
}

class RefinanceLead extends Lead
{
// stuff specific to refinance leads
}

我的问题是:
  • 这个策略有意义吗?
  • 如果是这样,Eloquent 将如何处理数据?我有一个leads表和 refinance_leads table ?
  • RefinanceLead 类的新实例是否会利用 leads 中的任何内容? table ?

  • 我无法通过文档回答这个问题,但如果我错过了解释的地方,请告诉我。谢谢。

    最佳答案

    1. 是的,在父模型中拥有所有常见功能是非常有意义的。

    2. 基本上每个 Eloquent 模型都会处理 protected $table 中定义的自己的表中的数据。多变的。您可以覆盖父变量以为所有不同的子模型设置单独的表。 Laravel Table Names

    例如,如果您使用 getId() RefinanceLead 实例上的方法,它将返回 refinance_lead 表中的 id。如果您在 PurchadeLead 实例上使用它,它将从 purchade_table 中退出 id

    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 类抽象化,因此您不要为它关联表格。仅使用它来分隔常见的功能、关系等......
    当然,正如评论中所建议的那样,实现接口(interface)始终是一个好主意。
    abstract class Lead extends Model implements LeadContract
    {
    // class body
    }

    关于laravel - 在 Laravel 中扩展 Eloquent 模型(使用不同的表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36318164/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com