【发布时间】:2015-06-29 12:33:00
【问题描述】:
我通过 PK 找到一个实体,如下所示:
$ent = $em->getRepository('AppBundle:Representative')->find($id)
检查$ent 是否是真实的代表对象的正确方法是什么?我对 real 的意思是 $ent 当前存在于 DB 中,并且由于我计划对 INSERT 和 UPDATE 使用相同的结果而被返回。在伪代码中,我的想法是:
if (ent is Representative)
{
// Update its values
} else {
// Create a new Representative
}
我正在考虑使用is_object() 甚至instanceof,但我不确定他们是否会完成这项工作,或者即使 DB 上不存在代表,$ent 是否会成为一个对象。对此有何建议?我怎样才能做到这一点?
【问题讨论】:
-
我必须错过一些东西,因为我看到它的方式是,您的对象存在于 DB 中并且 find($id) 会找到它,它将是一个代表对象,或者如果没有找到它返回 null .我认为没有必要检查对象的类型...
-
@GuillaumeFache 所以你是说正确的方法应该只是像
!$ent或$ent !== null这样的条件?那个? -
如果在数据库中找不到对象,Doctrine 的默认查询应该返回 Null。如果您的问题是数据库中的对象是否有效,您应该查看验证symfony.com/doc/current/book/validation.html
-
@ReynierPM 我认为这就足够了(就像下面答案中所说的那样)
标签: php symfony doctrine-orm symfony-2.6 symfony-2.7