Symfony2 - FOSUserBundle - FindUserBy<field_in_custom_UserBundle>

Я создал свой собственный пользовательский пакет, расширяющий FOSUserBundle.

В моем UserBundle у меня есть поле memberID с его установщиками и получателями.

Я уже могу найти пользователей по memberID с помощью EntityManager, а затем я могу найти пользователя с помощью UserManager, совпадающего с именем пользователя / адресом электронной почты /..., полученным с помощью этого запроса EntityManager, но...

Есть ли способ найти UserByMemberID с помощью UserManager?

Спасибо.

3 ответа

Решение

Спасибо за ваши ответы. Кажется, это проще, чем все это.

OwnUserBundle:

 /**
 * @ORM\Column(type="string")
 *
 */
protected $memberID;

public function getMemberID()
{
    return $this->memberID;
}

public function setMemberID($memberID)
{
    $this->memberID = $memberID;
}

Вы можете запросить FOSUserBundle:

$userManager = $this->get('fos_user.user_manager');

$user = $userManager->findUserBy(array('memberID' => '123'));

Затем, используя метод findUserBy(array (* OwnUserBundle_field * => * search_parameter_value *)), вы получите экземпляр пользователя / s.

Каждый "нестандартный" запрос должен быть записан в класс репозитория.
Вы также должны связать этот класс с тем, который представляет вашу модель данных.

Предположим, что ваша сущность называется User, вы должны сделать что-то вроде этого

/**
 * VendorName\UserBundle\Entity\User
 *
 * @ORM\Table(name="users")
 * @ORM\Entity(repositoryClass="VendorName\UserBundle\Repository\UserRepository")
 */
class User implements AdvancedUserInterface
{
[...]

This says that every "custom" query for that entity will be fit into that repository class.

Now you have to create the repository

class UserRepository extends EntityRepository implements UserProviderInterface
{
    public function findUserByMemberID($id)
    {
       /* your logic here */
    }
[...]

and you can use that in the following way

$userRepo = $this->em->getRepository('VendorUserBundle:User');
$userRepo->findUserByMemberID();

Вы можете расширить UserManager из FOSUserBundle в вашем комплекте и написать свой собственный метод. И вы могли бы следовать этим инструкциям http://symfony.com/doc/current/book/doctrine.html

Другие вопросы по тегам