0

例如,为什么 Product 对象有一个名为 Save 的方法?

在我看来,将自己保存在数据库中的产品是错误的。一个产品不应该只知道自己的责任吗?我是否不了解 AR 的目的,或者问题不在我的解释中?

$product = new Product();
$product->name = 'sample post';
$product->price = 10;
$product->save();
4

1 回答 1

2

Active Record 的一般原则是对象的实例是数据存储中的单行,并且对象完全负责自身的持久性。

对象有一个单一的职责,那就是管理自身的持久性

Martin Fowler 说得最好

在数据库表或视图中包装一行、封装数据库访问并在该数据上添加域逻辑的对象。

一个对象同时携带数据和行为。这些数据大部分是持久的,需要存储在数据库中。Active Record 使用最明显的方法,将数据访问逻辑放在域对象中。这样,所有人都知道如何在数据库中读取和写入数据。

于 2013-09-03T13:45:55.030 回答