2017-07-02 13 views
2

Symfony(Doctrine)の2つのテーブル間にリレーションシップを作成する際に問題があります。 私はPerson Entityを持っているアドレス帳を作成しています。関係OneToMany(1人は多くのアドレスを持っています)との関係を持っています。 私が実行します。Symfony 2.8 2つのテーブル間でリレーションを作成できません

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

私はエラーだ:

パーソン:

<?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; 
    } 
} 

住所:を私は両方のエンティティとのコードを入れて下

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

<?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

** Entity **という単語で問題を見つけることができますか? 'php app/console doctrine:generate:エンティティ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")。 "$"を削除してください

関連する問題