Я создал клиент, который расширяет FOSOAuthServerBundle. Код этого клиента следующий:
<?php
namespace Acme\ApiBundle\Entity;
use FOS\OAuthServerBundle\Entity\Client as BaseClient;
use Doctrine\ORM\Mapping as ORM;
/**
* Class Client
*
* @package Acme\ApiBundle\Entity
*
* @ORM\Table("oauth2_clients")
* @ORM\Entity
*/
class Client extends BaseClient
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
protected $name;
public function __construct()
{
parent::__construct();
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
}
Итак, как я уже сказал, я расширяю FOSOAuthServerBundle который имеет $ randomId (\ friendsofsymfony \ oauth-server-bundle \ Entity \ Client.php, строка 28). Теперь я получаю сообщение об ошибке:
MappingException в строке MappingException.php 565:
Дублирующее определение столбца «random_id» для объекта «Acme \ ApiBundle \ Entity \ Client» в сопоставлении столбца поля или дискриминатора.
Где я ошибся?
Когда я использовал FOS\OAuthServerBundle\Entity\Client
Я использовал класс, который расширяет другой, целевой класс (FOS\OAuthServerBundle\Model\Client
). Были целевые переменные, такие как $ RandomId, который я нашел дубликатом. Так что, по моему мнению, как Acme\ApiBundle\Entity\Client
продолжается FOS\OAuthServerBundle\Entity\Client
который расширяется FOS\OAuthServerBundle\Model\Client
мы получили переменные дважды, а не один раз. Поэтому я решил продлить FOS\OAuthServerBundle\Model\Client
напрямую, и это решает мою проблему. Кто-нибудь может объяснить, почему нельзя делать код таким способом?
Других решений пока нет …