【发布时间】:2025-11-30 02:30:02
【问题描述】:
我正在处理 Doctrine 中的关系(使用 Symfony 5)。 我所拥有的是这两种关系:
- 用户
- 可用性
用户有一个 ID 并且有很多可用性。
所以实体用户有
/**
* @ORM\OneToMany(targetEntity="UserAvailability", mappedBy="user")
*/
private $availability;
实体可用性则相反。
可用性与以下因素有关:
id、user_id、day_name、start_time 和 end_time,就这么简单。
我已经通过 ManyToMany 实现了并且我想在这种情况下实现的目标是:
我需要从客户端接收用户的全部可用性集并使用它来更新我的用户的可用性,所以我定义了一个 setAvailability 方法,它接收可用性实体的集合并简单地做
$this->availabilities = $availabilities.
这在我添加新的可用性时有效,但在我持久化实体时不会删除数据库上而不是集合中的可用性。
同样的方法可以完美地处理多对多关系。
我错过了什么?
*** 更新 **
public function setAvailability($availability): self
{
$this->availability = $availability;
return $this;
}
当删除多对多关系中的关系但不在多对一中时,相同的代码有效,属性“可用性”已正确设置,但在使用持久/刷新时,已删除的可用性不会在数据库上删除。
谢谢
【问题讨论】:
-
可以分享一下方法吗?
-
User.availability 不是拥有方,因此,对它的更改只是部分应用。好好看看doctrine-project.org/projects/doctrine-orm/en/2.7/reference/…(特别是孤儿删除)。现在不确定是否必须在(用户)可用性对象上主动取消设置用户
标签: php symfony orm doctrine backend