Doctrine – vlastni repozitar, jak na to?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
radik
Člen | 21
+
0
-

Cau,
jakym zpusobem muzu v doctrine udelat vlastni repository? Kdyz jsem zkusil udelat:

Entita

/**
 * @ORM\Entity(repositoryClass="App\Models\Repository\User")
 */
class User extends \Kdyby\Doctrine\Entities\BaseEntity
{
...

Repozitar:

class User extends \Kdyby\Doctrine\EntityRepository
{
    public function FindByUsername($username)
    {
        $q=$this->_em->createQuery('SELECT u FROM User u WHERE u.username = :username');
        $q->setParameter('username', $username);
        return $q->getResult();
    }
}

ale nevim jak to pak pouzit v kodu a zkusim s $this->userRepository pracovat, tak to udela tohle:

$this->userRepository = $this->em->getRepository('App\Models\Entity\User');

Tak me to nevidi mou funkci coz chapu.

$this->userRepository = $this->em->getRepository('App\Models\Repository\User');

haze to Class „App\Models\Repository\User“ sub class of „Kdyby\Doctrine\EntityRepository“ is not a valid entity or mapped super class.

$this->userRepository = $this->em->getRepository('User');

Haze to Metadata of class User was not found, because the class is missing or cannot be autoloaded.

Dik

leninzprahy
Člen | 150
+
0
-

Mělo by to být (Entity Manager vytvoří správný repozitář právě podle anotace repositoryClass="App\Models\Repository\User" v entitě)

$this->userRepository = $this->em->getRepository('App\Models\Entity\User');

Co ti to vrátí za chybu, když voláš?

$user = $this->userRepository->FindByUsername('nejakeJmeno');

smazal jsi cache?

Editoval leninzprahy (23. 12. 2016 14:19)

radik
Člen | 21
+
0
-

Tak nakonec pomohlo promazat cache, ale psalo to, ze to nezna tu funkci FindByUsername.