エンティティの更新に問題があります。
各ユーザーは1つのグループにのみ参加できます。
ユーザーのスキーマは次のとおりです。
- id INT
- ユーザー名STRING
- group_id INT DEFAULT NULL
グループのスキーマは次のとおりです。
- id INT
- 名前文字列
Group.php
class Group {
/**
* @ORM\OneToMany(targetEntity="Saprizo\Entity\User", mappedBy="group", cascade={"all"})
*/
protected $users;
public function setUsers($users) {
foreach ($users as $user) {
$user->setGroup($this);
}
$this->users = $users;
}
}
User.php
class User {
/**
* @ORM\ManyToOne(targetEntity="SaprizoStatistics\Entity\Group", inversedBy="users", cascade={"all"})
* @ORM\JoinColumn(name="group_id", referencedColumnName="id", nullable=true)
*/
protected $group;
}
次のようなグループに新しいユーザーを追加しようとすると
$group->setUsers(array($user1, $user2));
$em->persist($group);
$em->flush();
すべての値を保存します。
しかし、私がグループからすべてのユーザーを削除しようとすると、
$group->setUsers(array());
$em->persist($group);
$em->flush();
何もしません。空の配列を設定して保存した後、user1とuser2のgroup_id列をに変更する必要があることを理解していますnull
。
Doctrineアノテーションの間違いですか?