Php 如何检查对象是否在Doctrine2存储库中找到?

Php 如何检查对象是否在Doctrine2存储库中找到?,php,symfony,doctrine-orm,symfony-2.6,symfony-2.7,Php,Symfony,Doctrine Orm,Symfony 2.6,Symfony 2.7,我通过PK找到一个实体,如下所示: $ent = $em->getRepository('AppBundle:Representative')->find($id) 检查$ent是否为真正的代表性对象的正确方法是什么?我对real的意思是,$ent当前存在于DB上,并且返回了,因为我计划将相同的结果用于INSERT和UPDATE。在伪代码中,我头上的是: if (ent is Representative) { // Update its values } else {

我通过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
,但我不确定他们是否会做这项工作,或者
$ent
是否会是一个对象,即使数据库中不存在代表。有什么建议吗?如何实现这一点?

方法(您使用的)返回一个
对象
,如果在数据库中找不到该对象,则返回
null
。以下所有条件均有效:

if ($entity) {
}

if (null !== $entity) {
}

if ($entity instanceof Representative) {
}
选择一个最适合您的编码标准,并始终如一地使用它

如果您不需要在找不到新对象时创建它,最好抛出一个异常并适当地处理它

这个怎么样:

$product = $this->getDoctrine()
        ->getRepository('AppBundle:Product')
        ->find($id);

    if (!$product) {
        throw $this->createNotFoundException(
            'No product found for id '.$id
        );

来源:

我肯定错过了一些东西,因为在我看来,要么你的对象存在于DB中,find($id)会找到它,它将是一个代表性的对象,要么如果找不到它,它将返回null。我认为没有必要检查对象的类型…@GuillaumeFache所以你是说正确的方法应该是像
这样的东西$ent
$ent!==在条件上为空
?如果在数据库中找不到对象,则条令的默认查询应返回Null。如果您的问题是数据库中的对象是否有效,您应该查看validation@ReynierPM,我认为这已经足够了是的(就像下面的答案中所说的)事实上,我需要创建一个新的对象,如果您可以查看与此对象有一定关系的对象,请查看thx以获得您的答案