我想用Doctrine可视化来自数据库的数据,但它似乎不起作用......
这是我的班级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 &#34;的appbundle \实体\组织&#34;不是有效实体或映射超级 类。
在 供应商/教义/ ORM / LIB /学说/ ORM /映射/ MappingException.php:346 在 学说\ ORM \制图\ MappingException :: classIsNotAValidEntityOrMappedSuperClass(&#39;的appbundle \实体\组织&#39;) (供应商/教义/ ORM / LIB /学说/ ORM /映射/驱动程序/ AnnotationDriver.php:91) 在 教义\ ORM \映射\驱动\ AnnotationDriver-&GT; loadMetadataForClass(&#39;的appbundle \实体\组织&#39 ;, 对象(ClassMetadata)) (供应商/教义/普通/ LIB /学说/普通/持久性/映射/驱动程序/ MappingDriverChain.php:102) 在 教义\共同\持久性\映射\驱动\ MappingDriverChain-&GT; loadMetadataForClass(&#39;的appbundle \实体\组织&#39 ;, 对象(ClassMetadata)) (供应商/教义/ ORM / LIB /学说/ ORM /映射/ ClassMetadataFactory.php:151) 在 教义\ ORM \映射\ ClassMetadataFactory-&GT; doLoadMetadata(对象(ClassMetadata), null,false,array()) (供应商/教义/普通/ LIB /学说/普通/持久性/映射/ AbstractClassMetadataFactory.php:332) 在 教义\共同\持久性\映射\ AbstractClassMetadataFactory-&GT; loadMetadata(&#39;的appbundle \实体\组织&#39;) (供应商/教义/ ORM / LIB /学说/ ORM /映射/ ClassMetadataFactory.php:78) 在 教义\ ORM \映射\ ClassMetadataFactory-&GT; loadMetadata(&#39;的appbundle \实体\组织&#39;) (供应商/教义/普通/ LIB /学说/普通/持久性/映射/ AbstractClassMetadataFactory.php:216) 在 教义\共同\持久性\映射\ AbstractClassMetadataFactory-&GT; getMetadataFor(&#39;的appbundle:组织&#39;) (vendor / doctrine / orm / lib / Doctrine / ORM / EntityManager.php:281)在Doctrine \ ORM \ EntityManager-&gt; getClassMetadata(&#39; AppBundle:Organization&#39;) (供应商/教义/ ORM / LIB /学说/ ORM /存储库/ DefaultRepositoryFactory.php:44) 在 教义\ ORM \库\ DefaultRepositoryFactory-&GT; getRepository(对象(EntityManager的), &#39;的appbundle:组织&#39;) (vendor / doctrine / orm / lib / Doctrine / ORM / EntityManager.php:698)在Doctrine \ ORM \ EntityManager-&gt; getRepository(&#39; AppBundle:Organization&#39;) (src / AppBundle / Controller / OrganizationController.php:27)在AppBundle \ Controller \ OrganizationController-&gt; showInfoAction()at call_user_func_array(阵列(对象(OrganizationController), &#39; showInfoAction&#39;),array()) (供应商/ symfony的/ symfony的/ SRC / Symfony的/组件/ HttpKernel / HttpKernel.php:153) 在Symfony \ Component \ HttpKernel \ HttpKernel-&gt; handleRaw(object(Request), 1) (供应商/ symfony的/ symfony的/ SRC / Symfony的/组件/ HttpKernel / HttpKernel.php:68) 在Symfony \ Component \ HttpKernel \ HttpKernel-&gt;句柄(对象(请求),1, 真正) (供应商/ symfony的/ symfony的/ SRC / Symfony的/组件/ HttpKernel / Kernel.php:171) 在Symfony \ Component \ HttpKernel \ Kernel-&gt;句柄(对象(请求)) (网络/ app_dev.php:29)
我有OrganizationController
和OrganizationRepository
。
答案 0 :(得分:1)
将类名注释移动到下一行或在其前面给出空格,如下所示
/**
* Class Organization
* @package AppBundle\Entity
*
* @ORM\Table(name="organization")
*
* @ORM\Entity(repositoryClass="AppBundle\Repository\OrganizationRepository")
*/
答案 1 :(得分:0)
setId()
方法(它不会解决您的问题,但您不能使用此方法)。因为$id
是自动生成的。删除它:
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
$id
属性的私有可见性。正确的方法是 - 将其设置为受保护。