了解 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 模型的主要内容,如果未能解决你的问题,请参考以下文章