2015-03-20 2 views
0

Я совершенно новый для Symfony и доктрины так ....Symfony доктрина несколько отношений

В моем приложении у меня есть следующие объекты:

class Company 

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


/** 
* @ORM\Column(name="name", type="string", length=255) 
* @ORM\OneToMany(targetEntity="\UserBundle\Entity\User", mappedBy="company") 
* @ORM\OneToMany(targetEntity="\AppBundle\Entity\Account", mappedBy="company") 
*/ 
protected $name; 

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

UserClass (FOSUserBundle):

class User extends BaseUser 

/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @var string 
* 
* @ORM\Column(name="firstname", type="string", length=255) 
*/ 
protected $firstname; 

/** 
* @var string 
* 
* @ORM\Column(name="name", type="string", length=255) 
*/ 
protected $name; 


/** 
* @ORM\ManyToOne(targetEntity="\AppBundle\Entity\Company") 
* @ORM\JoinColumn(name="company_id", referencedColumnName="id") 
*/ 
protected $company; 

и счетам:

class Account 

/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var integer 
* 
* @ORM\Column(name="num", type="integer") 
*/ 
private $num; 

/** 
* @var string 
* 
* @ORM\Column(name="name", type="string", length=255) 
*/ 
private $name; 


/** 
* @ORM\ManyToOne(targetEntity="\AppBundle\Entity\Company") 
* @ORM\JoinColumn(name="company_id", referencedColumnName="id") 
*/ 
protected $company; 

Имеются следующие отношения.

одна компания -> много пользователей, многие пользователи -> одна компания; одна компания -> много счетов; многие счета -> одна компания;

является возможность генерировать отношения, как я сделал по:

* @ORM\Column(name="name", type="string", length=255) 
* @ORM\OneToMany(targetEntity="\UserBundle\Entity\User", mappedBy="company") 
* @ORM\OneToMany(targetEntity="\AppBundle\Entity\Account", mappedBy="company") 

-> двух целевых субъектов?

Спасибо ему за помощь ...

ответ

0

Это абсолютно неверно. Если вы не хотите, чтобы какие-либо ссылки из компании были пользователями и учетными записями, вы можете просто опустить эти поля. И это отношение будет однонаправленным. У вас будет ссылка на Компанию как от пользователя, так и от Пользователя.

Просто опускает неправильные отображения:

/** 
* @ORM\Column(name="name", type="string", length=255) 
*/ 
protected $name; 

Если вы хотите создать ссылку на пользователь и учетные записи, связанные с компанией, вам нужно определить поля для этих ArrayCollections как то:

/** 
* @ORM\OneToMany(targetEntity="\UserBundle\Entity\User", mappedBy="company") 
*/ 
protected $users; 
+0

ТНХ для быстрого ответ! так что я исправлю, что я определяю поля для каждой сущности, которую хочу связать? (пользователи и учетные записи?), а для каждого объекта - новый массив? – Felix2000

+0

Да. Но если вам не нужен этот ArrayCollections, вы можете опустить эти поля, но отношение в базе данных будет существовать. –

+0

Спасибо! помогли мне много ... теперь я только должен узнать о ArrayCollections и им хорошо продолжать ;-) – Felix2000

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