【发布时间】:2021-10-20 17:05:39
【问题描述】:
我们想在应用程序的每个模型上为 created_at 和 updated_at 添加 get()Attribute 方法。因此,一种方法当然是编写一个新的 BaseModel 类,并让所有模型都扩展该类而不是默认模型。
有没有(更好的)方法可以在不使用新的 BaseModel 类的情况下做到这一点?
目标是让创建不使用这些方法的新模型成为不可能。
【问题讨论】:
-
Model类是“供应商代码”,这意味着如果你想直接修改它,你可以,但是如果你更新了 Laravel 的版本,更改将丢失。创建一个新的class BaseModel extends Model,然后将你的模型基于这个class ExampleModel extends BaseModel,这可能是解决这个问题的最好方法。我不确定在这种情况下“更好”(这是一个任意词,可能意味着任何东西)会是什么样子。只要您作为开发人员确保所有新模型都在扩展您的BaseModel类,一切都很好。 -
感谢您的回答,“更好”是指某种最佳实践,以防我不知道。编辑供应商 ofc 不是一种选择
-
没问题????不,在我看来,你有正确的方法。您可以也许通过模型测试来强化这种做法,确保所有模型都基于
BaseModel而不是Model,但这感觉有点过头了。 -
好的,太好了!我想我会尽量不要忘记它,并且可能会过度考虑测试想法;)