我在更新实体时遇到问题。
每个用户只能在一个组中。
用户的架构是:
- ID INT
- 用户名 STRING
- group_id INT 默认 NULL
组的架构是:
- ID INT
- 名称字符串
组.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;
}
}
用户.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
.
教义注释中的错误吗?