我正在尝试制作一个自定义Doctrine的ORM存储库并对其进行扩展,但我找不到让它工作的方法。到目前为止,这就是我所拥有的:
原始存储库
//AppBundle\Repository\LocaleRepository.php
namespace AppBundle\Repository;
use Doctrine\ORM\EntityRepository;
use JMS\DiExtraBundle\Annotation as DI;
class LocaleRepository extends EntityRepository
{
protected myCustomFunction(){
}
}
扩展存储库
//OfficeBundle\Repository\OfficeRepository.php
namespace OfficeBundle\Repository;
use AppBundle\Repository\LocaleRepository;
class OfficeRepository extends LocaleRepository
{
//Empty class
}
我的好意:
namespace OfficeBundle\Entity;
// some calls to traits
use Doctrine\ORM\Mapping as ORM;
/**
* Office
*
* @ORM\Table(name="office__office")
* @ORM\Entity(repositoryClass="OfficeBundle\Repository\OfficeRepository")
*/
class Office implements TranslatableInterface{
//...
}
最后是电话:
$em = $this->getDoctrine()->getManager();
$this->getEntityManager();
$office=$em->getRepository('OfficeBundle:Office')->myCustomeFunction($slug);
这让例外:
Undefined method 'myCustomFunction'. The method name must start with either findBy or findOneBy!
如果我将myCustomeFunction放在OfficeRepository中,它可以正常工作,但它会降低存储库的extendind的目的。此外,控制器加载的存储库是正确的,vardumping类显示:'OfficeBundle \ Repository \ OfficeRepository'。
最后,我在办公室实体上使用KNP DoctrineBehaviors(可翻译)。
答案 0 :(得分:4)
如果要在存储库类之外使用它,则必须创建方法 function resizePageFullScreen(){
window.moveTo(0,0) ;
window.resizeTo(screen.availWidth,screen.availHeight);
}
<body onload="resizePageFullScreen();">
。
public