2017-10-25 9 views
0

DoctrineのGitHubページに投稿するテストケースを作成しようとしていて、スキーマ生成に問題があります。コールEntityManager#getClassMetadata(...)の「クラスは有効なエンティティではありません」エラー

$this->_em->getClassMetadata(Server::class) 

は例外に

クラス「教義\はDDC6786 \サーバー\ \モデルをテスト」を引き起こし、有効なエンティティまたはマッピングされ、スーパークラスではありません。

私は間違っていますか? /それを働かせるには?

CODE

DDC6786Test

namespace Doctrine\Tests\ORM\Functional\Ticket; 

use Doctrine\Tests\Models\DDC6786\Endpoint; 
use Doctrine\Tests\Models\DDC6786\EndpointServerConfig; 
use Doctrine\Tests\Models\DDC6786\Server; 
use Doctrine\Tests\OrmFunctionalTestCase; 

class DDC6786Test extends OrmFunctionalTestCase 
{ 

    public function testIssue() 
    { 
     $this->assertTrue(true); 
    } 

    public function setUp() 
    { 
     parent::setUp(); 
     try { 
      $this->_schemaTool->createSchema(
       [ 
        $this->_em->getClassMetadata(Server::class), 
        $this->_em->getClassMetadata(EndpointServerConfig::class), 
        $this->_em->getClassMetadata(Endpoint::class), 
       ] 
      ); 
     } catch(\Exception $e) { 
      $breakpoint = null; 
     } 
    } 

} 

Endpoint

namespace Doctrine\Tests\Models\DDC6786; 

use Doctrine\ORM\Mapping as ORM; 
use ReflectionClass; 

/** 
* Endpoint 
* 
* @ORM\Table(name="endpoint") 
* @ORM\Entity 
*/ 
class Endpoint 
{ 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    protected $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="role", type="string", nullable=true) 
    */ 
    protected $role; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="server_place", type="string", nullable=true) 
    * 
    * @Groups({"export"}) 
    */ 
    protected $serverPlace; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="contact_person", type="string", length=500, nullable=true) 
    * 
    * @Groups({"export"}) 
    */ 
    protected $contactPerson; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="created", type="datetime", nullable=false) 
    */ 
    protected $created; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="updated", type="datetime", nullable=true) 
    */ 
    protected $updated; 

    /** 
    * @var EndpointServerConfig 
    * 
    * @ORM\OneToOne(targetEntity="EndpointServerConfig", inversedBy="endpoint", cascade={"persist"}) 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="endpoint_server_config_id", referencedColumnName="id") 
    * }) 
    * 
    * @Groups({"export"}) 
    */ 
    protected $endpointServerConfig; 

    /** 
    * @param integer $id 
    * 
    * @return Endpoint 
    */ 
    public function setId($id) 
    { 
     $this->id = $id; 

     return $this; 
    } 

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

    /** 
    * @param string $role 
    * 
    * @return Endpoint 
    */ 
    public function setRole($role) 
    { 
     $this->role = $role; 

     return $this; 
    } 

    /** 
    * @return string 
    */ 
    public function getRole() 
    { 
     return $this->role; 
    } 

    /** 
    * @param string $type 
    * 
    * @return Endpoint 
    */ 
    public function setType($type) 
    { 
     $this->type = $type; 

     return $this; 
    } 

    /** 
    * @return string 
    * 
    * @Groups({"export"}) 
    */ 
    public function getType() 
    { 
     return str_replace(
      'Endpoint', 
      '', 
      (new ReflectionClass($this))->getShortName() 
     ); 
    } 

    /** 
    * @param string $serverPlace 
    * 
    * @return Endpoint 
    */ 
    public function setServerPlace($serverPlace) 
    { 
     $this->serverPlace = $serverPlace; 

     return $this; 
    } 

    /** 
    * @return string 
    */ 
    public function getServerPlace() 
    { 
     return $this->serverPlace; 
    } 

    /** 
    * @param string $contactPerson 
    * 
    * @return Endpoint 
    */ 
    public function setContactPerson($contactPerson) 
    { 
     $this->contactPerson = $contactPerson; 

     return $this; 
    } 

    /** 
    * @return string 
    */ 
    public function getContactPerson() 
    { 
     return $this->contactPerson; 
    } 

    /** 
    * @param \DateTime $created 
    * 
    * @return Endpoint 
    */ 
    public function setCreated($created) 
    { 
     $this->created = $created; 

     return $this; 
    } 

    /** 
    * @return \DateTime 
    */ 
    public function getCreated() 
    { 
     return $this->created; 
    } 

    /** 
    * @param \DateTime $updated 
    * 
    * @return Endpoint 
    */ 
    public function setUpdated($updated) 
    { 
     $this->updated = $updated; 

     return $this; 
    } 

    /** 
    * @return \DateTime 
    */ 
    public function getUpdated() 
    { 
     return $this->updated; 
    } 

    /** 
    * @param EndpointServerConfig $endpointServerConfig 
    * 
    * @return Endpoint 
    */ 
    public function setEndpointServerConfig(EndpointServerConfig $endpointServerConfig = null) 
    { 
     $this->endpointServerConfig = $endpointServerConfig; 

     return $this; 
    } 

    /** 
    * @return EndpointServerConfig 
    */ 
    public function getEndpointServerConfig() 
    { 
     return $this->endpointServerConfig; 
    } 

} 

EndpointServerConfig

namespace Doctrine\Tests\Models\DDC6786; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* EndpointServerConfig 
* 
* @ORM\Table(name="endpoint_server_config", indexes={ 
*  @ORM\Index(name="fk_endpoint_server_config_server_idx", columns={"server_name"})} 
*) 
* @ORM\Entity 
*/ 
class EndpointServerConfig 
{ 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    protected $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="dns_address", type="string", length=253, nullable=true) 
    */ 
    protected $dnsAddress; 

    /** 
    * @var Server 
    * 
    * @ORM\ManyToOne(targetEntity="Server") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="server_name", referencedColumnName="name") 
    * }) 
    */ 
    protected $server; 

    /** 
    * @var Endpoint 
    * 
    * @ORM\OneToOne(targetEntity="Endpoint", mappedBy="endpointServerConfig") 
    */ 
    protected $endpoint; 

    /** 
    * @param integer $id 
    * 
    * @return EndpointServerConfig 
    */ 
    public function setId($id) 
    { 
     $this->id = $id; 

     return $this; 
    } 

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

    /** 
    * @param string $dnsAddress 
    * 
    * @return EndpointServerConfig 
    */ 
    public function setDnsAddress($dnsAddress) 
    { 
     $this->dnsAddress = $dnsAddress; 

     return $this; 
    } 

    /** 
    * @return string 
    */ 
    public function getDnsAddress() 
    { 
     return $this->dnsAddress; 
    } 

    /** 
    * @param Server $server 
    * 
    * @return EndpointServerConfig 
    */ 
    public function setServer(Server $server = null) 
    { 

     if(! $server || ! $server->getName()) { 
      $server = null; 
     } 
     $this->server = $server; 

     return $this; 
    } 

    /** 
    * @return Server 
    */ 
    public function getServer() 
    { 
     return $this->server; 
    } 

    /** 
    * @param Endpoint $endpoint 
    * 
    * @return EndpointServerConfig 
    */ 
    public function setEndpoint($endpoint) 
    { 
     $this->endpoint = $endpoint; 

     return $this; 
    } 

    /** 
    * @return Endpoint 
    */ 
    public function getEndpoint() 
    { 
     return $this->endpoint; 
    } 

} 

Server

namespace Doctrine\Tests\Models\DDC6786; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Server 
* 
* @ORM\Table(name="server") 
* @ORM\Entity 
* 
* @author automatix 
*/ 
class Server 
{ 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=32, nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="NONE") 
    */ 
    protected $name; 

    /** 
    * @var boolean 
    * 
    * @ORM\Column(name="active", type="boolean", nullable=true) 
    */ 
    protected $active; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="updated", type="datetime", nullable=true) 
    */ 
    protected $updated; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="node_name", type="string", length=50, nullable=true) 
    */ 
    protected $nodeName; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="virtual_node_name", type="string", length=50, nullable=true) 
    */ 
    protected $virtualNodeName; 

    /** 
    * Not relevant for ORM. Should become obsolete after and be removed after the migration to Doctrine. 
    * 
    * @var EndpointServerConfig[] 
    */ 
    protected $endpointServerConfigs; 

    /** 
    * @param string $name 
    * 
    * @return Server 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 
     return $this; 
    } 

    /** 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 

    /** 
    * @param boolean $active 
    * 
    * @return Server 
    */ 
    public function setActive($active) 
    { 
     $this->active = $active; 
     return $this; 
    } 

    /** 
    * @return boolean 
    */ 
    public function getActive() 
    { 
     return $this->active; 
    } 

    /** 
    * @param \DateTime $updated 
    * 
    * @return Server 
    */ 
    public function setUpdated($updated) 
    { 
     $this->updated = $updated; 
     return $this; 
    } 

    /** 
    * @return \DateTime 
    */ 
    public function getUpdated() 
    { 
     return $this->updated; 
    } 

    /** 
    * @param string $nodeName 
    * 
    * @return Server 
    */ 
    public function setNodeName($nodeName) 
    { 
     $this->nodeName = $nodeName; 

     return $this; 
    } 

    /** 
    * @return string 
    */ 
    public function getNodeName() 
    { 
     return $this->nodeName; 
    } 

    /** 
    * @param string $virtualNodeName 
    * 
    * @return Server 
    */ 
    public function setVirtualNodeName($virtualNodeName) 
    { 
     $this->virtualNodeName = $virtualNodeName; 

     return $this; 
    } 

    /** 
    * @return string 
    */ 
    public function getVirtualNodeName() 
    { 
     return $this->virtualNodeName; 
    } 

    /** 
    * @param EndpointServerConfig[] $endpointServerConfigs 
    * 
    * @return Server 
    */ 
    public function setEndpointServerConfigs($endpointServerConfigs) 
    { 
     $this->endpointServerConfigs = $endpointServerConfigs; 
     return $this; 
    } 

    /** 
    * @return EndpointServerConfig[] $endpointServerConfigs 
    */ 
    public function getEndpointServerConfigs() 
    { 
     return $this->endpointServerConfigs; 
    } 

} 

答えて

0

問題は、アノテーションによって引き起こされました。 use Doctrine\ORM\Mapping as ORM; & @ORM\Entityは動作しませんが、ちょうど@ORM\Entity(と@ORM\Tableなど)があります。

関連する問題