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