【发布时间】:2013-01-29 13:42:05
【问题描述】:
我是第 2 条教义的新手。
为什么 Doctrine 2 没有基本的验证方法来验证所有值是否符合实体属性?
我的问题旨在更多地了解教义 2 的工作原理,以及为什么不说教义 2 中的问题。(主要是因为我是新手,我错过了对教义 2 设计方式的一些理解)
示例:
<?php
// entities/User.php
/**
* @Entity @Table(name="users")
**/
class User
{
/**
* @Id @GeneratedValue @Column(type="integer")
* @var int
**/
protected $id;
/**
* @Column(type="string")
* @var string
**/
protected $name;
}
使用build in validate的代码示例(不需要连接db,只验证@Column(type="integer"))基本功能在教义2中不存在:
$user=new User();
$user->setId('trtr');
$user->setName("goodname");
if($user->validate()){
echo 'ok';
}
else{
echo $user->validateError();
}
//output: id of User should be integer and not string
谢谢
【问题讨论】:
-
我在问教义-project.org/blog/doctrine2-validations.html 中的问题之前看过。但是在教义中没有内置验证方法,只有不使用实体属性定义的自定义方法。还是我错过了什么?
-
确实没有内置验证。
-
所以我问为什么?如果实体属性定义了列类型等。为什么不将它们用于基本验证?
-
我们不会将 Doctrine 2 与任何验证器一起发布,原因是我们认为所有框架都已经发布了相当不错的框架,可以轻松集成到您的域中。除了我们是不想维护另一个验证库的 ORM 专家之外,将验证的责任转移到领域层还可以让您更轻松地将其集成到框架表单库中。
标签: orm doctrine doctrine-orm datamapper