php - Symfony2/Doctrine 中的实体和模型有什么区别

标签 php symfony fosuserbundle

我正在浏览 FOSUserBundle。

我想了解 Model/User.phpEntity/User.php 之间的区别。

Model和Entity不能一样吗?

最佳答案

这是 best summary关于 Doctrine 2 的角色和术语。

Entity 被 Doctrine 2.0 ORM 中的 UnitOfWork 模式(以及 Java 世界中的 Hibernate 中)使用,也是现实世界中事物的对象表示。它具有与记录相同的属性和方法,但它不知道其持久性。它基本上是一个 POPO(普通的旧 PHP 对象)。这使得这些类和对象非常轻量级。

模型是事物的概念对象表示。该术语可用于上述所有内容。记录是模型,就像实体或文档一样。该术语描述了事物的对象表示。

因此,如果您想创建一个包含一些模型的 bundle ,并且您希望您的 bundle 独立于任何持久层,您将创建模型类和定义该事物的接口(interface)。

您将在其中定义和/或实现任何不特定于任何持久性实现的所有内容,并且您将通过委托(delegate)使用相关实体或文档类来处理特定内容。

这是例如在定义用户模型的 FOSUserBundle 中完成的。这个用户模型在整个包中使用,但没有完整的实现来访问它自己的数据(我没有看,但我认为它可能只是一个接口(interface))。 最终的实现是在一个实体类中完成的,另一个是在文档类中完成的,所以无论您是使用 MySQL 还是 MongoDB,您仍然可以使用相同的用户模型您可以甚至在不更改代码的情况下从一个切换到另一个,因为它始终使用独立于实体或文档的模型。

关于php - Symfony2/Doctrine 中的实体和模型有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11443755/

相关文章:

php - 如何限制 Symfony 中特定用户对( Controller )操作/方法的访问?

php - 我如何在 symfony2 中访问 Twig 模板中的存储库函数

php bin/console symfony 命令给出一个 fatal error

c# - Symfony2 (FOSUserBundle) SHA512 哈希与 C# SHA512 哈希不匹配

symfony - 将 fos 用户包服务转换为 yml

php - 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由

php - php 中的事件 APC

php - 使用mysql做一个小游戏

php - 从 Mysql 数据库检索数据 PHP MVC

javascript - 在表中显示 JSON 数组的值