Symfony 2.8不能创建两个表之间的关系

问题描述:

我在Symfony(Doctrine)中的两个表之间创建关系时遇到了问题。 我在创建地址簿,我有个人实体,我想与关系OneToMany地址实体(一个人有很多地址)有关系。 当我运行:Symfony 2.8不能创建两个表之间的关系

php app/console doctrine:generate:entities AdressBookBundle/Entiti/Address 

我得到错误:

[RuntimeException]                 
    Namespace "AdressBookBundle\Entiti\Address" does not contain any mapped entities. 

下面我把用两个实体代码:

人:

<?php 

namespace AdressBookBundle\Entity; 

use AdressBookBundle\Entity\Address; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* Person 
* 
* @ORM\Table(name="person") 
* @ORM\Entity(repositoryClass="AdressBookBundle\Repository\PersonRepository") 
*/ 
class Person 
{ 
    /** 
    * @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=255) 
    */ 
    private $name; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="surname", type="string", length=255) 
    */ 
    private $surname; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="description", type="string", length=500) 
    */ 
    private $description; 

    /** 
    * @ORM\OneToMany(targetEntity="Address", mappedBy="person") 
    */ 
    private $address; 


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

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

     return $this; 
    } 

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

    /** 
    * Set surname 
    * 
    * @param string $surname 
    * @return Person 
    */ 
    public function setSurname($surname) 
    { 
     $this->surname = $surname; 

     return $this; 
    } 

    /** 
    * Get surname 
    * 
    * @return string 
    */ 
    public function getSurname() 
    { 
     return $this->surname; 
    } 

    /** 
    * Set description 
    * 
    * @param string $description 
    * @return Person 
    */ 
    public function setDescription($description) 
    { 
     $this->description = $description; 

     return $this; 
    } 

    /** 
    * Get description 
    * 
    * @return string 
    */ 
    public function getDescription() 
    { 
     return $this->description; 
    } 
    /** 
    * Constructor 
    */ 
    public function __construct() 
    { 
     $this->address = new \Doctrine\Common\Collections\ArrayCollection(); 
    } 

    /** 
    * Add address 
    * 
    * @param \AdressBookBundle\Entity\Address $address 
    * @return Person 
    */ 
    public function addAddress(\AdressBookBundle\Entity\Address $address) 
    { 
     $this->address[] = $address; 

     return $this; 
    } 

    /** 
    * Remove address 
    * 
    * @param \AdressBookBundle\Entity\Address $address 
    */ 
    public function removeAddress(\AdressBookBundle\Entity\Address $address) 
    { 
     $this->address->removeElement($address); 
    } 

    /** 
    * Get address 
    * 
    * @return \Doctrine\Common\Collections\Collection 
    */ 
    public function getAddress() 
    { 
     return $this->address; 
    } 
} 

地址:

<?php 

namespace AdressBookBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use AdressBookBundle\Entity\Person; 

/** 
* Address 
* 
* @ORM\Table(name="address") 
* @ORM\Entity(repositoryClass="AdressBookBundle\Repository\AddressRepository") 
*/ 
class Address 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="city", type="text") 
    */ 
    private $city; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="street", type="text") 
    */ 
    private $street; 

    /** 
    * @var int 
    * 
    * @ORM\Column(name="house_number", type="integer") 
    */ 
    private $houseNumber; 

    /** 
    * @var int 
    * 
    * @ORM\Column(name="house_unit_number", type="integer") 
    */ 
    private $houseUnitNumber; 

    /** 
    * [email protected]\ManyToOne(targetEntity="Person", inversedBy="address") 
    * @ORM\JoinColumn(name="person_id", referencedColumnName="id") 
    */ 
    private $person; 

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

    /** 
    * Set city 
    * 
    * @param string $city 
    * @return Address 
    */ 
    public function setCity($city) 
    { 
     $this->city = $city; 

     return $this; 
    } 

    /** 
    * Get city 
    * 
    * @return string 
    */ 
    public function getCity() 
    { 
     return $this->city; 
    } 

    /** 
    * Set street 
    * 
    * @param string $street 
    * @return Address 
    */ 
    public function setStreet($street) 
    { 
     $this->street = $street; 

     return $this; 
    } 

    /** 
    * Get street 
    * 
    * @return string 
    */ 
    public function getStreet() 
    { 
     return $this->street; 
    } 

    /** 
    * Set houseNumber 
    * 
    * @param integer $houseNumber 
    * @return Address 
    */ 
    public function setHouseNumber($houseNumber) 
    { 
     $this->houseNumber = $houseNumber; 

     return $this; 
    } 

    /** 
    * Get houseNumber 
    * 
    * @return integer 
    */ 
    public function getHouseNumber() 
    { 
     return $this->houseNumber; 
    } 

    /** 
    * Set houseUnitNumber 
    * 
    * @param integer $houseUnitNumber 
    * @return Address 
    */ 
    public function setHouseUnitNumber($houseUnitNumber) 
    { 
     $this->houseUnitNumber = $houseUnitNumber; 

     return $this; 
    } 

    /** 
    * Get houseUnitNumber 
    * 
    * @return integer 
    */ 
    public function getHouseUnitNumber() 
    { 
     return $this->houseUnitNumber; 
    } 
} 

请问我能解释一下它的工作原理吗? 据我所知,我创建的关系:

/** 
    * [email protected]\ManyToOne(targetEntity="Person", inversedBy="address") 
    * @ORM\JoinColumn(name="person_id", referencedColumnName="id") 
*/ 

而且比neew列person_id是创建在地址表中。我对吗?

+0

在$ * @ ORM \ ManyToOne中出现'$'是一个错字吗?它不应该在那里。正确的注释应该看起来像这个'* @ORM \ ManyToOne' – tftd

+0

你可以用**实体**这个词来指出问题吗? 'php app/console doctrine:generate:entities AdressBookBundle/Entiti/Address' –

你在你的注释有一个错误:

[email protected]\ManyToOne(targetEntity="Person", inversedBy="address") 

应该

@ORM\ManyToOne(targetEntity="Person", inversedBy="address") 

删除$,使其工作。

从@ORM \ ManyToOne(targetEntity =“Client”)中删除“$”。

@ORM \ ManyToOne(targetEntity =“Client”)。删除“$”