【问题标题】:How to make extensible Eloquent models?如何制作可扩展的 Eloquent 模型?
【发布时间】:2013-06-12 02:36:20
【问题描述】:

如何在不修改源代码的情况下添加到 Eloquent 模型?我的意思是说我有一个用户模型,我想向 ProfilePost 添加一个 has_many 关系,但我不想修改用户模型。我想这样做是因为稍后,第 3 方开发人员也可以将他们的关系添加到我的用户模型中,而无需更改我的用户模型的源代码。什么是公认的解决方案?我一直在研究单对多关系,但我仍然需要在 User 模型中添加一个 belongs_to 子句。

对此,公认的解决方案是什么?

【问题讨论】:

    标签: php laravel one-to-many relationship eloquent


    【解决方案1】:

    是解决方案开发人员创建一个新的用户模型,扩展您的用户模型。

    您的用户模型

    <?php namespace \App\Models;
    
    use Eloquent;
    
    class User extends Eloquent {}
    

    第三方开发者用户模型

    <?php namespace \custom_lib\Models;
    
    use \App\Models\User as BaseUser;
    
    class User extends BaseUser {}
    

    现在在\custom_lib\Models\User 中,第三方开发者可以添加他的lib/plugin 的关系。

    【讨论】:

    • 这仍然存在一个问题,即开发人员扩展了用户模型,但已经编写的代码将使用旧的。我一直在为此查看 IOC 容器,但感觉它的可扩展性不够。有什么想法吗?
    猜你喜欢
    • 2020-06-19
    • 2021-07-21
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2023-03-03
    相关资源
    最近更新 更多