2015-12-18 25 views
-1

我必须为实体用户和地址。我的任务是在教条的帮助下将它们多对一地联系起来。梅索德GET返回地址只有地址,没有别的 类用户多对一的教条

class User{ 
/** 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @var Address 
* @ORM\@ManyToOne(targetEntity="\AppBundle\Entity\Address", mappedBy="user") 
*/ 
protected $addressData; 


/** 
* @return \AppBundle\Entity\Address 
*/ 
protected function getAddress(){ 
    return $this->addressData; 
} 

类地址的ID

class Address{ 
/** 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @OneToMany(targetEntity="AppBundle\Entity\User", inversedBy="addressData") 
* JoinColumn(name="address",referencedColumnName = "id") 
*/ 
protected $users; 

public function __construct() 
{ 
    $this->users = new ArrayCollection(); 
} 

我不能给关系他们

+0

你有什么目标吗? – scoolnico

+0

@ scoolnico从用户数据库中获取将user.info + address.info合并到一个对象中的用户 –

+1

在User(例如:'$ user = $ em-> findById('1');')中查询之后,对象必须包含例如:'$ city = $ user-> getAddress() - > getCity();' – scoolnico

回答

0

您的实现,一个地址可以有很多用户。 如果你想要反转,反转你的映射并重新生成你的实体。

在每一个情况下,不要忘记做:

$ php app/console doctrine:generate:entities 

然后,当你在你的实体所有getter和setter方法:

如果你想要一个地址添加到您的控制器用户动作,只是做:

$em = $this->getDoctrine()->getEntityManager(); 

$user = new User(); // Create a new user 
$em->persist($user); // P1ersist new user 

$address = new Address() // Create a new address 
$address->addUser($user); // Add address to newly created user; 
$em->persist($address); // Persist the newly created address 

$em->flush(); // Flush all in DB 

而且从地址检索用户:

$address->getUsers(); 

或检索来自用户

$user->getAddress(); 

希望的地址,这是你所需要的