教义多对一

时间:2015-12-18 10:25:07

标签: symfony doctrine-orm doctrine

我必须实体用户和地址。我的任务是在Doctrine的帮助下将他们多对一地联系起来。 Methode get Address仅返回地址的id,没有别的 班级用户

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

我不能把他们关系

1 个答案:

答案 0 :(得分: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();

希望这是你需要的