PHP code example of juliangut / doctrine-base-repositories

1. Go to this page and download the library: Download juliangut/doctrine-base-repositories library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

juliangut / doctrine-base-repositories example snippets


use Doctrine\ORM\EntityRepository;
use Jgut\Doctrine\Repository\EventsTrait;
use Jgut\Doctrine\Repository\FiltersTrait;
use Jgut\Doctrine\Repository\PaginatorTrait;
use Jgut\Doctrine\Repository\Repository;
use Jgut\Doctrine\Repository\RepositoryTrait;

class customRepository extends EntityRepository implements Repository
{
    use RepositoryTrait;
    use EventsTrait;
    use FiltersTrait;
    use PaginatorTrait;

    protected function getFilterCollection()
    {
        // Custom implementation
    }

    public function countBy($criteria)
    {
        // Custom implementation
    }

    public function findPaginatedBy($criteria, array $orderBy = [], $itemsPerPage = 10)
    {
        // Custom implementation
    }

    protected function getManager()
    {
        // Custom implementation
    }

    // Custom methods
}

$repository = $manager->getRepository(ObjectClass::class);

$object = $repository->findByOrFail(['slug' => 'my_slug']);
$object = $repository->findBySlugOrFail('my_slug');
$object = $repository->findOneByOrFail(['slug' => 'my_slug']);
$object = $repository->findOneBySlugOrFail('my_slug');

$repository = $manager->getRepository(ObjectClass::class);

$newObject = $repository->getNew();

$repository = $manager->getRepository(ObjectClass::class);

$existingOrNewObject = $repository->findOneByOrGetNew(['slug' => 'my_slug']);

$repository = $manager->getRepository(ObjectClass::class);

$repository->add(new ObjectClass());

$repository = $manager->getRepository(ObjectClass::class);

$managedObject = $repository->findById(1);

$repository->remove($managedObject);

$repository = $manager->getRepository(ObjectClass::class);

$repository->removeAll();

$repository = $manager->getRepository(ObjectClass::class);

$repository->removeBy(['active' => false]);
$repository->removeByActive(false);
$repository->removeOneBy(['id' => 1]);
$repository->removeOneById(1);

$repository = $manager->getRepository(ObjectClass::class);

$totalObjects = $repository->countAll();
$activeObjects = $repository->countBy(['active' => true]);
$activeObjects = $repository->countByActive(true);

$repository = $manager->getRepository(ObjectClass::class);

$repository->disableEventSubscriber(\Gedmo\Timestampable\TimestampableListener::class);
$repository->save(new EntityClass());
$repository->restoreEventSubscribers();

$repository = $manager->getRepository(ObjectClass::class);

$repository->disableEventListeners('onFlush');
$repository->save(new EntityClass());
$repository->restoreEventListeners('onFlush');
// $repository->restoreAllEventListener();

$repository = $manager->getRepository(ObjectClass::class);

$repository->disableEventListener('onFlush', \Gedmo\Loggable/LoggableListener::class);
$repository->save(new EntityClass());
$repository->restoreEventListener('onFlush');
// $repository->restoreAllEventListener();

$repository = $manager->getRepository(ObjectClass::class);

$repository->disableFilters();
$repository->save(new EntityClass());
$repository->restoreFilters();

$repository = $manager->getRepository(ObjectClass::class);

$repository->disableFilter('locale');
$repository->save(new EntityClass());
$repository->restoreFilter('locale');
// $repository->restoreFilters();

$repository = $manager->getRepository(ObjectClass::class);

$paginator = $repository->findPaginatedBy(['active' => true], ['date' => 'ASC'], 10);
$paginator = $repository->findPaginatedByActive(true, ['date' => 'ASC'], 10);

// Assuming there are 80 "active"
$paginator->getTotalItemCount(); // 80
$paginator->getCurrentItemCount(); // 10
$paginator->getCurrentPageNumber(); // 1
...

$paginator = $repository->findPaginatedByOrFail(['active' => true], ['date' => 'ASC'], 10);