2010-05-09 38 views
1

我无法完全理解MVC中的ORM模型。了解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); 

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

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

有人可以请说明这一点。

谢谢。

回答

2

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

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

我应该在哪里把它使用原则机型代码:

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

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

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