2017-07-02 218 views
2

我在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' –

回答

0

你在你的註釋有一個錯誤:

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

應該

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

刪除$,使其工作。

0

從@ORM \ ManyToOne(targetEntity =「Client」)中刪除「$」。

@ORM \ ManyToOne(targetEntity =「Client」)。刪除「$」

相關問題