不同实体中实体的属性

时间:2013-05-30 18:59:05

标签: symfony doctrine-orm entity fosuserbundle

我正在使用FOSUserBundle来管理用户和安全性。我还有一个不同的表格,其中包含用户的所有元数据,如个人资料图片,脸谱ID等。

我需要告诉FOSUserBundle,它不是从用户实体获取用户名和电子邮件,而是必须转到另一个实体“UserMeta”,进行查询以检索所有用户元数据并仅使用具有typeMeta等于name。

类似的东西:

public function getUsername(){
    $metas = $this->getMetas();
    foreach($metas as $meta){
        if($meta->getTypeMeta() == '_name'){
        return $meta->getContent();
        }
    }
    return null;
}

1 个答案:

答案 0 :(得分:0)

使用FOSUserBundle的最佳选择是使用自定义存储层。

您的代码如下:

abstract class CustomUser implements UserInterface
{
  public function getUsername(){
      $metas = $this->getMetas();
      foreach($metas as $meta){
          if($meta->getTypeMeta() == '_name'){
          return $meta->getContent();
          }
      }
      return null;
  }
  //....
}

在您的config.yml

fos_user:
    db_driver: custom
    user_class: Acme\YourBundle\Model\CustomUser
    service:
        user_manager: acme_user.custom_manager
    firewall_name: main

此处提供完整文档:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/custom_storage_layer.md