2015-12-18 2 views
-1

У меня есть пользователь и адрес лица. Моя задача - связать их много-к-одному с помощью Доктрины. Methode получить адрес возврата только идентификатор адреса и ничего Класс пользователяучение много к одному

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

и Класс Адрес

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 

Тогда, когда у вас есть все методы получения и установки в вашей организации:

Если вы хотите добавить адрес вашего пользователя в контроллере действие, просто сделать:

$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(); 

Надежда это то, что вам нужно

Смежные вопросы