Doctrine不映射FOSUserBundle和FOSOAuthServerBundle中的字段

时间:2016-11-23 15:22:26

标签: php symfony doctrine-orm fosuserbundle fosoauthserverbundle

我正在使用Symfony 2.8,FOSUserBundle 1.3和FOSOAuthServerBundle 1.5

对于那些捆绑包工作所需的所有类,我最终得到的原则是没有正确更新我的模式。我的意思是它没有考虑基类的字段。

<?php

namespace COMPANY\AuthBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Entity\User as BaseUser;

/**
 * Utilisateur
 *
 * @ORM\Table(name="users")
 * @ORM\Entity
 */
class User extends BaseUser
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }

    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }
}

这是我的配置:

<?php

namespace COMPANY\AuthBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\OAuthServerBundle\Entity\Client as BaseClient;

/**
 * Client
 *
 * @ORM\Table(name="oauth2_clients")
 * @ORM\Entity(repositoryClass="COMPANY\AuthBundle\Repository\ClientRepository")
 */
class Client extends BaseClient
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;


    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    public function __construct()
    {
        parent::__construct();
    }
}

这是我的班级用户

{{1}}

所以,是的,我确实使用了正确的用途而不是FOS \ UserBundle \ Model \ User作为BaseUser;

OAuthServerBundle类也是如此:(我只是在这里放一个,它们都遵循相同的模式)

{{1}}

有没有人知道为什么基类'字段没有放入我的数据库?谢谢:))

1 个答案:

答案 0 :(得分:2)

好的,我在搜索了10个小时后找到了解决方案......

解决方案是不要忘记将FOSUserBundle和FOSOAuthServerBundle以及所有基类包添加到您的映射......

所以这应该是配置:

doctrine:
orm:
    #auto_generate_proxy_classes: "%kernel.debug%"
    default_entity_manager: default
    entity_managers:
        default:
            connection: default
            naming_strategy: doctrine.orm.naming_strategy.underscore
            mappings:
                COMPANYAuthBundle: ~
                FOSUserBundle: ~
                FOSOAuthBundle: ~

此外,如果要使用每个路径,则无法将捆绑包从捆绑包中生成,因此请为每个路径创建两个捆绑包。然后在每个Buncle类中添加以下函数:

public function getParent()
{
    return "FOSOAuthServerBundle";  //Or return "FOSUserBundle"; but you can't put both
}