如何检查是否在 Doctrine2 存储库中找到了对象?
How do I check if object was found in a Doctrine2 repository?
我正在通过 PK 找到一个实体,如下所示:
$ent = $em->getRepository('AppBundle:Representative')->find($id)
检查$ent
是否是一个真正的Representative对象的正确方法是什么?我对 real 的意思是 $ent
当前存在于 DB 上并被返回,因为我计划对 INSERT
和 UPDATE
使用相同的结果.在伪代码中,我脑子里的是:
if (ent is Representative)
{
// Update its values
} else {
// Create a new Representative
}
我在考虑使用 is_object()
甚至 instanceof
,但我不确定他们是否会完成这项工作,或者 $ent
是否会成为一个对象,即使 Representative 没有存在于数据库中。对此有何建议?我怎样才能做到这一点?
EntityRepository::find()
方法(您使用)returns 和 object
,或者如果在数据库中找不到对象,则 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
);
来源:click me
我正在通过 PK 找到一个实体,如下所示:
$ent = $em->getRepository('AppBundle:Representative')->find($id)
检查$ent
是否是一个真正的Representative对象的正确方法是什么?我对 real 的意思是 $ent
当前存在于 DB 上并被返回,因为我计划对 INSERT
和 UPDATE
使用相同的结果.在伪代码中,我脑子里的是:
if (ent is Representative)
{
// Update its values
} else {
// Create a new Representative
}
我在考虑使用 is_object()
甚至 instanceof
,但我不确定他们是否会完成这项工作,或者 $ent
是否会成为一个对象,即使 Representative 没有存在于数据库中。对此有何建议?我怎样才能做到这一点?
EntityRepository::find()
方法(您使用)returns 和 object
,或者如果在数据库中找不到对象,则 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
);
来源:click me