了解 MVC 中的 ORM 模型

Posted

技术标签:

【中文标题】了解 MVC 中的 ORM 模型【英文标题】:understanding the ORM models in MVC [closed] 【发布时间】:2010-05-09 04:41:24 【问题描述】:

我无法完全理解 MVC 中的 ORM 模型。

所以我将 symfony 与教义一起使用。创建了学说模型。

这是否意味着我不必创建任何模型?教义模型是我唯一需要的模型吗?

我应该把使用教义模型的代码放在哪里:

例如。

$phoneIds = array();

$phone1 = new Phonenumber();
$phone1['phonenumber'] = '555 202 7890';
$phone1->save();

$phoneIds[] = $phone1['id'];

$phone2 = new Phonenumber();
$phone2['phonenumber'] = '555 100 7890';
$phone2->save();

$phoneIds[] = $phone2['id'];

$user = new User();
$user['username'] = 'jwage';
$user['password'] = 'changeme';
$user->save();

$user->link('Phonenumbers', $phoneIds);

这段代码应该在控制器中还是在另一个模型中?

我应该在哪里验证这些字段(检查它是否存在于数据库中,该电子邮件是否为电子邮件等)?

有人能解释一下吗?

谢谢。

【问题讨论】:

【参考方案1】:

这是否意味着我不必 创建任何模型?是教义 模型是我需要的唯一模型吗?

这取决于您对模型的定义。就 Symfony 而言 - Doctrine 类是您的模型,并且在文档中如此命名。一般来说,尽管模型不仅仅是处理数据持久性的类。它们可以是包含您的业务规则/逻辑的任何特定领域的类。因此,例如,您的用户会话类 apps/yourapp/lib/myUser.class.php 可以称为模型,因为您不会在 Symfony 中找到它。

我应该把使用教义模型的代码放在哪里:

这取决于你在做什么。 IT 可能在控制器中,或者它可能在另一个模型中,无论我们谈论的是基于 Doctrine 的类,还是其他不基于 Doctrine 的模型类。不过绝对不在视图中:-)

我应该在哪里验证这些字段(检查它是否存在于 数据库,该电子邮件是电子邮件等)?

通常在 Symfony 中,这发生在表单类中。对于生成的每个模型类,它都会获得一个关联的表单和过滤器类。表单具有字段,并且字段具有附加的验证器。您通常在控制器中设置表单,然后为其提供数据,然后它会验证和处理错误。在检查项目是否存在方面 - 你通常不会这样做。您尝试该操作,然后捕获错误并执行适当的操作。如果您尝试添加已存在的记录,则会引发异常(来自您的数据库生成的重复键错误)。

【讨论】:

以上是关于了解 MVC 中的 ORM 模型的主要内容,如果未能解决你的问题,请参考以下文章

MVC:我需要了解模型

Symfony2 和其他 MVC 框架中的模型?

六十Ajax

将 ORM 模型和 MVC 的搜索逻辑放在哪里? [复制]

在 MVC 应用程序中从模型正确调用数据库?

Django基础五之django模型层单表操作