سؤال

I´ve created my own user Bundle, extending FOSUserBundle.

In my UserBundle, I have a memberID field, with its setters and getters.

I can already find users by memberID using EntityManager, and then I could find the user through UserManager matching the username/email/... obtained with that EntityManager query, but...

Is there a way to findUserByMemberID using UserManager?

Thank you.

هل كانت مفيدة؟

المحلول

Thank you for your replies. It seems it´s easier than all this stuff.

OwnUserBundle:

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

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

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

You can query FOSUserBundle:

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

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

Then, using method findUserBy(array(*OwnUserBundle_field* => *search_parameter_value*)) you´ll get the user/s instance.

نصائح أخرى

Every query that is "not standard" one has to be written into a repository class
You have also to relate this class with one that represent you data model.

Suppose that your entity is called User, you have to do something like this

/**
 * 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();

You could extend the UserManager from the FOSUserBundle in your bundle and write your own method. And you could follow these instructions http://symfony.com/doc/current/book/doctrine.html#custom-repository-classes

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top