我正在使用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}}
有没有人知道为什么基类'字段没有放入我的数据库?谢谢:))
答案 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
}