Ich versuche ein benutzerdefiniertes ORM-Repository von Doctrine zu erstellen und zu erweitern, aber ich finde keinen Weg, es zum Laufen zu bringen. Bisher das ist, was ich habe:Ich kann das Doctrine-Repository nicht erweitern
Das ursprüngliche Repository
//AppBundle\Repository\LocaleRepository.php
namespace AppBundle\Repository;
use Doctrine\ORM\EntityRepository;
use JMS\DiExtraBundle\Annotation as DI;
class LocaleRepository extends EntityRepository
{
protected myCustomFunction(){
}
}
Der erweiterte Repository
//OfficeBundle\Repository\OfficeRepository.php
namespace OfficeBundle\Repository;
use AppBundle\Repository\LocaleRepository;
class OfficeRepository extends LocaleRepository
{
//Empty class
}
Mein entiy:
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{
//...
}
Und schließlich der Anruf:
$em = $this->getDoctrine()->getManager();
$this->getEntityManager();
$office=$em->getRepository('OfficeBundle:Office')->myCustomeFunction($slug);
Diese trows die Ausnahme:
Undefined method 'myCustomFunction'. The method name must start with either findBy or findOneBy!
Wenn ich myCustomeFunction innerhalb des OfficeRepository legen es gut funktioniert, aber es senkt den Zweck extendind Repository. Außerdem ist das vom Controller geladene Repository das richtige, und die Klasse zeigt Folgendes: "OfficeBundle \ Repository \ OfficeRepository".
Schließlich verwende ich KNP DoctrineBehaviors (übersetzbar) auf der Büroeinheit.
Danke, es war so obvius ... Ich bin Dump –