エンティティ ユーザー
class User {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
...
/**
* @ORM\ManyToMany(targetEntity="Controleitor\Model\Entity\Account", mappedBy="user")
*/
protected $userAccount;
public function __construct() {
$this->userAccount = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getUserAccount() {
return $this->userAccount;
}
...
}
エンティティ アカウント
class Account{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
*
* @ORM\ManyToMany(targetEntity="JasUser\Model\Entity\User", inversedBy="userAccount")
* @ORM\JoinTable(name="user_has_account",
* joinColumns={@ORM\JoinColumn(name="idAccount", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="idUser", referencedColumnName="id")}
* )
*/
private $user;
public function __construct(array $options = null) {
$this->user = new \Doctrine\Common\Collections\ArrayCollection();
}
...
}
テスト:
$user = $this->entityManager->getRepository('User')->findOneById($id);
$user->getUserAccount()->add($account);
$this->entityManager->persist($account);
$this->entityManager->flush();
$id = $entity->getId();
ユーザー、userAccount を取得し、データベースに新しいレコード アカウントを挿入しますが、期待どおりに、ユーザーとアカウント間の多対多の関連付けのレコードを user_has_account テーブルに追加しません。