Php 在Symfony2中扩展supermapped类不会在MySQL中添加列
我正在扩展FOSAuthServerBundle,它有超上限类的实体,我需要扩展它们。让我们拿一个,AccessToken。扩展AccessToken时,我需要将其所有父属性映射到数据库中,例如Php 在Symfony2中扩展supermapped类不会在MySQL中添加列,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,我正在扩展FOSAuthServerBundle,它有超上限类的实体,我需要扩展它们。让我们拿一个,AccessToken。扩展AccessToken时,我需要将其所有父属性映射到数据库中,例如$expiresAt和$scope,但目前它们不是。很明显,有些事情我不明白或者我做错了 以下是我自己的AccessToken yml中的内容: OSC\OAuthServerBundle\Entity\AccessToken: type: entity id: id:
$expiresAt
和$scope
,但目前它们不是。很明显,有些事情我不明白或者我做错了
以下是我自己的AccessToken yml中的内容:
OSC\OAuthServerBundle\Entity\AccessToken:
type: entity
id:
id:
type: integer
id: true
generator:
strategy: AUTO
manyToOne:
client:
targetEntity: Client
user:
targetEntity: Application\Sonata\UserBundle\Entity\User
lifecycleCallbacks: { }
以下是我的Accesstoken php文件:
<?php
namespace OSC\OAuthServerBundle\Entity;
use FOS\OAuthServerBundle\Document\AccessToken as BaseAccessToken;
use FOS\OAuthServerBundle\Model\ClientInterface;
use Symfony\Component\Security\Core\User\UserInterface;
class AccessToken extends BaseAccessToken
{
/**
* @var integer
*/
protected $id;
protected $client;
protected $user;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
public function getClient()
{
return $this->client;
}
public function setClient(ClientInterface $client)
{
$this->client = $client;
}
public function getUser()
{
return $this->user;
}
public function setUser(UserInterface $user)
{
$this->user = $user;
}
}
<?php
namespace OSC\OAuthServerBundle\Entity;
use FOS\OAuthServerBundle\Entity\AccessToken as BaseAccessToken; //Entity here not model !
use FOS\OAuthServerBundle\Model\ClientInterface;
use Symfony\Component\Security\Core\User\UserInterface;
class AccessToken extends BaseAccessToken
{
}
您是否尝试将此类扩展:FOS\OAuthServerBundle\Entity\AccessToken作为BaseAccessToken
而不是此类FOS\OAuthServerBundle\Document\AccessToken
您不必两次声明属性(在超级类和子类中)。
不要重新声明$id
,$client
和$user
我刚刚尝试过,我删除了表并重新创建了它,但没有成功!谢谢。为什么在类中声明$id、$client和$user作为超类已经这样做了?看看这个例子:。只有超类具有$mapped1和$mapped2声明。超类字段是“受保护”的,您可以在子类中使用它们,而无需再次声明它们。但即使我删除了它们,我的数据库表中仍然只有这3个。好的,所以我必须删除它们,并且使用实体而不是模型!好的,我编辑我的答案,我认为双重声明是问题的原因。
<?php
namespace OSC\OAuthServerBundle\Entity;
use FOS\OAuthServerBundle\Entity\AccessToken as BaseAccessToken; //Entity here not model !
use FOS\OAuthServerBundle\Model\ClientInterface;
use Symfony\Component\Security\Core\User\UserInterface;
class AccessToken extends BaseAccessToken
{
}