【发布时间】:2015-10-03 03:49:53
【问题描述】:
有实体
/**
* @ORM\Entity(repositoryClass="Some\Namspace\CustomRepository")
* @ORM\Table(name="image_type")
*/
class MyEntity{...}
并且 CustomRepository 扩展了 EntityRepository 以覆盖一些方法,例如 find 或 findAll
文档说:
// $em instanceof EntityManager $user = $em->find('MyProject\Domain\User', $id);本质上,EntityManager#find() 只是以下操作的快捷方式:
$user = $em->getRepository('MyProject\Domain\User')->find($id);
link:doctrine-orm.readthedocs.org
但我的 CustomRepository 仅适用于 $em->getRepository('Entities\MyEntity')->find($id)
使用$em->find('Entities\MyEntity',$id); 忽略我在CustomRepository 中覆盖的方法
- 这是一个错误吗?
- 或者这种结构之间有区别?
- 如何在不覆盖 EntityManager 的情况下覆盖我的实体的
find,finAll,...方法?
编辑 (1)
使用作曲家:
"require": {
"doctrine/orm": "~2.4"
},
find代码:
public function find($entityName, $id, $lockMode = null, $lockVersion = null)
{
$class = $this->metadataFactory->getMetadataFor(ltrim($entityName, '\\'));
if ( ! is_array($id)) {
if ($class->isIdentifierComposite) {
throw ORMInvalidArgumentException::invalidCompositeIdentifier();
}
$id = array($class->identifier[0] => $id);
}
........... other ~100 lines
}
【问题讨论】:
标签: php symfony orm doctrine-orm