8. Repository¶
8.1. Create a Custom Repository class for your resource¶
<?php
/*
* This file is part of the Openjet package.
*
* (c) Openjet SA
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Openjet\Bundle\AppBundle\Repository\User;
use Openjet\Bundle\AppBundle\Doctrine\ORM\EntityRepository;
use Openjet\Component\User\Repository\UserRepositoryInterface;
class UserRepository extends EntityRepository implements UserRepositoryInterface
{
/**
* {@inheritdoc}
*/
public function findOneByEmail($email)
{
return parent::findOneBy(['email' => $email]);
}
}
8.2. Configure the repository for your resource¶
openjet_resource:
resources:
user:
classes:
repository: Openjet\Bundle\AppBundle\Repository\User\UserRepository
8.3. Use the new method of the repository in routing¶
openjet_user_show:
path: /users/{email}
methods: [GET]
defaults:
_controller: openjet.controller.user:showAction
_sylius:
repository:
method: findOneByEmail
arguments: [$email]
8.4. What happens while overriding Repositories?¶
- The parameter
openjet.repository.user.classcontainsOpenjet\Bundle\AppBundle\Repository\User\UserRepository. - The repository service
openjet.repository.useris using your new class. - Under the
openjet.repository.userservice you have got all methods from the base repository available and all you have added.