Doctrine orm 条令和ZF2-与协会合作(插入)
实体用户Doctrine orm 条令和ZF2-与协会合作(插入),doctrine-orm,zend-framework2,Doctrine Orm,Zend Framework2,实体用户 class User { /** * @var integer * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ protected $id; ... /** * @ORM\ManyToMany(tar
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();
}
...
}
测试:
它获取用户、userAccount,并在数据库中插入新的记录帐户,但它不会在user\u has\u account表中添加记录,因为用户和帐户之间有很多关联,正如我所期望的那样。看起来您的关系是反向的
拥有方必须使用OneToOne、ManyToOne或ManyToMany映射声明的inversedBy属性。inversedBy属性包含反向侧关联字段的名称
仅对关联的反面所做的更改将被忽略。确保更新双向关联的双方(或者至少从原则的角度更新拥有方)
这可能有点烦人
首选的解决方案是只在内部接触集合。因此,与其让调用代码执行$user->getUserAccount()->添加($account)
,不如这样实现它:
<?php
class Account {
// ...
public function addUser($user){
$this->users->add($user);
}
}
class User {
// ...
public function addAccount($account){
// relation must be added from the owning side
$account->addUser($this);
}
}
<?php
class Account {
// ...
public function addUser($user){
$this->users->add($user);
}
}
class User {
// ...
public function addAccount($account){
// relation must be added from the owning side
$account->addUser($this);
}
}