2

我创建了自己的用户包,扩展了 FOSUserBundle。

在我的 UserBundle 中,我有一个 memberID 字段,其中包含它的 setter 和 getter。

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

有没有办法使用 UserManager 找到UserByMemberID?

谢谢你。

4

3 回答 3

6

谢谢您的回复。它似乎比所有这些东西都容易。

自己的用户包:

 /**
 * @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*)) 您将获得用户实例。

于 2012-07-20T14:02:28.027 回答
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();
于 2012-07-20T10:42:37.183 回答
0

您可以从捆绑包中的 FOSUserBundle 扩展 UserManager 并编写自己的方法。你可以按照这些说明http://symfony.com/doc/current/book/doctrine.html#custom-repository-classes

于 2012-07-19T15:47:33.157 回答