2017-08-08 23 views
0

我想從原則數據庫中的數據可視化的有效實體或映射超類,但它似乎並不工作...班「的appbundle 實體組織」是不是

這裏是我的Organization類:

<?php 
namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/**Class Organization 
* @package AppBundle\Entity 
* 
* @ORM\Table(name="organization") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ 
* OrganizationRepository") 
* 
*/ 
class Organization 
{ 

/** 
* @var int 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 


/** 
* @var string 
* @ORM\Column(name="name", type="string", length=45) 
* 
*/ 
protected $name; 




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

/** 
* @param int $id 
*/ 
public function setId($id) 
{ 
    $this->id = $id; 
} 

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

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

}

這裏的錯誤:

Doctrine\ORM\Mapping\MappingException: Class "AppBundle\Entity\Organization" is not a valid entity or mapped super class.

at vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php:346 at Doctrine\ORM\Mapping\MappingException::classIsNotAValidEntityOrMappedSuperClass('AppBundle\Entity\Organization') (vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php:91) at Doctrine\ORM\Mapping\Driver\AnnotationDriver->loadMetadataForClass('AppBundle\Entity\Organization', object(ClassMetadata)) (vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php:102) at Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain->loadMetadataForClass('AppBundle\Entity\Organization', object(ClassMetadata)) (vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:151) at Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(object(ClassMetadata), null, false, array()) (vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:332) at Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('AppBundle\Entity\Organization') (vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php:78) at Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata('AppBundle\Entity\Organization') (vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php:216) at Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('AppBundle:Organization') (vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:281) at Doctrine\ORM\EntityManager->getClassMetadata('AppBundle:Organization') (vendor/doctrine/orm/lib/Doctrine/ORM/Repository/DefaultRepositoryFactory.php:44) at Doctrine\ORM\Repository\DefaultRepositoryFactory->getRepository(object(EntityManager), 'AppBundle:Organization') (vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:698) at Doctrine\ORM\EntityManager->getRepository('AppBundle:Organization') (src/AppBundle/Controller/OrganizationController.php:27) at AppBundle\Controller\OrganizationController->showInfoAction() at call_user_func_array(array(object(OrganizationController), 'showInfoAction'), array()) (vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:153) at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1) (vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:68) at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true) (vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:171) at Symfony\Component\HttpKernel\Kernel->handle(object(Request)) (web/app_dev.php:29)

我甲肝e OrganizationControllerOrganizationRepository

+0

在後'@ORM \實體(repositoryClass'你有斷線之後,可能是這個原因。 – Tomasz

+0

@TomaszTurkowski這是因爲StackOverflow上有一些問題,把整條生產線不破壞它,但在我的實體註解代碼是okey – HessianMad

+0

[在移動文件系統中的類後,類「XXX類不是有效的實體或映射的超類」](https://stackoverflow.com/questions/7820597/class-xxx-is-not -a-valid-entity-or-mapped-super-class-after-moving-the-class -i) – Vamsi

回答

1

移動類的名稱標註到下一行或放棄之前的空間,如下

/** 
* Class Organization 
* @package AppBundle\Entity 
* 
* @ORM\Table(name="organization") 
* 
* @ORM\Entity(repositoryClass="AppBundle\Repository\OrganizationRepository") 
*/ 
0
  1. 您應該檢查PHP文件名。你的實體文件名是Organization.php
  2. 你應該在代碼中刪除setId()方法(它不會解決你的問題,但是你不能放這個方法)。因爲$id是自動生成的。

刪除此:

/** 
    * @param int $id 
    */ 
    public function setId($id) 
    { 
     $this->id = $id; 
    } 
  • 而且 - 儘量不使用私人能見度爲$id財產。正確的方法是 - 將其設置爲受保護的。