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
是创建在地址表中。我对吗?
答
你在你的注释有一个错误:
[email protected]\ManyToOne(targetEntity="Person", inversedBy="address")
应该
@ORM\ManyToOne(targetEntity="Person", inversedBy="address")
删除$,使其工作。
答
从@ORM \ ManyToOne(targetEntity =“Client”)中删除“$”。
@ORM \ ManyToOne(targetEntity =“Client”)。删除“$”
在$ * @ ORM \ ManyToOne中出现'$'是一个错字吗?它不应该在那里。正确的注释应该看起来像这个'* @ORM \ ManyToOne' – tftd
你可以用**实体**这个词来指出问题吗? 'php app/console doctrine:generate:entities AdressBookBundle/Entiti/Address' –