2012-07-19 57 views
2

我创建了自己的用户包,扩展了FOSUserBundle。Symfony2 - FOSUserBundle - FindUserBy <field_in_custom_UserBundle>

在我的UserBundle中,我有一个memberID字段,它的setter和getters。

我已经可以找到使用的EntityManager由MEMBERID用户,然后我能找到的UserManager通过匹配用户的用户名/电子邮件/ ......与EntityManager的查询获得的,但是......

是否有办法使用UserManager找到UserByMemberID?

谢谢。

回答

6

谢谢您的答复。看起来这比所有这些东西都容易。

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(阵列(* OwnUserBundle_field * => * search_parameter_value *))you'll得到用户/实例。

1

每一个查询是“不标准”的一个已被写入到仓储类
你必须也涉及此类和一个表示你的数据模型。

假设你的实体被称为User,你必须做这样的事情

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

这是说每一个“自定义”查询该实体将适合到仓库类。

现在,你必须创建存储库

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

,你可以使用下列方式

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