Zum Inhalt

Doctrine Repositories

Standard Repositories

Standardmäßig kann auf die Enitäten über das Standard Doctrine-Repository Doctrine\ORM\EntityRepository zugegriffen werden:

1
2
3
4
<?php
$repo = $app['orm.em']->getRepository('Custom\\Entity\\ENTITY_NAME');
$repo->findAll();
$repo->findBy...()

Benutzerdefinierte Repositories

Zu jeder Entität kann aber auch eine eigene Repository-Klasse mit eigenen Abfragen implementiert werden. Dazu muss die Repository-Klasse in der Entity-Annotation bekannt und entsprechend implementiert werden. Die eigene Repository wird dann automatisch bei obigem Aufruf im Hintergrund geladen.

custom/Entity/Test.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<?php
namespace Custom\Entity;

use Areanet\PIM\Entity\Base;
use Areanet\PIM\Classes\Annotations as PIM;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="Custom\Classes\Repository\TestRepository")
 * @ORM\Table(name="test")
 * @PIM\Config(label = "Test")
 */
class Test extends Base
{
...
}

custom/Classes/Repository/TestRepository.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
namespace Custom\Classes\Repository;

use Doctrine\ORM\EntityRepository;

class TestRepository extends EntityRepository{

    public function findByTest(){
       ...
    }
}

Aufruf

1
2
<?php
$app['orm.em']->getRepository('Custom\\Entity\\Test')->findByTest();