Laravel 5中的仓储模式
存储库模式是由 Eric Evans 在他的领域驱动设计书中首次引入的。 事实上,存储库是应用程序访问域层的入口点。
简单来说,存储库允许您的所有代码使用对象,而无需知道对象是如何持久化的。存储库包含持久性的所有知识,包括从表到对象的映射。这提供了持久层的更加面向对象的视图,并使映射代码更加封装。
让你的存储库在 Laravel 中工作(作为一个真正的存储库——Eric Evans 领域驱动设计书)的唯一方法是将默认的 ORM 从活动记录更改为数据映射器。最好的替代品是教义。
学说 ORM
Doctrine 是一种 ORM(对象关系映射),它实现了数据映射器模式,并允许您将应用程序的业务规则与数据库的持久层完全分离。 Doctrine 使用 DQL,而不是 SQL。 DQL 为您带来对象查询语言,这意味着您将使用对象术语进行查询,而不是传统的关系查询术语。
它允许您以面向对象的方式编写数据库查询,并在您需要以使用默认存储库方法无法实现的方式查询数据库时提供帮助。在我看来,DQL 是与数据库保持联系的最强大方式。
教条与雄辩
Doctrine 实体只是一个普通的 PHP 简单类,不会增加任何 ORM 继承的开销。 Doctrine 使用相同的继承来管理多个查询请求,而无需访问数据库,这意味着整个请求都存在实体对象。
Doctrine 的另一个不错的功能是,无需迁移文件来创建数据库模式,而是自动创建数据库来反映实体注释中的元数据。另一方面,Eloquent 不太复杂并且非常易于使用。
这两者之间的完整比较需要一篇单独的文章。正如您所看到的,Doctrine 对象更轻、更抽象。然而,Doctrine 只适合特定的项目,因此它有时可能会给您带来开销。我相信这取决于程序员为应用程序选择最好的 ORM。
博客应用
现在是时候使用 Laravel 创建一个博客应用程序了。首先,我们需要建立教义。有一个桥梁可以与 Laravel 5 的现有配置进行匹配。要在 Laravel 项目中安装 Doctrine 2,我们运行以下命令:
composer require laravel-doctrine/orm 登录后复制