Doctrine orm 如何在实体上级联用户定义的操作?
我试图找出一种方法,在与一个实体关联的所有实体上级联一个操作。例如,如果我有一个用户,一个用户有实体,而这些实体有实体,我想对每个实体执行一个操作。具体来说,我希望对树中的每个实体执行验证 我如何实现像“getAssociatedEntities()”这样的东西: 我意识到我可以使用生命周期回调来执行验证。然而,设置验证注释使事情变得更加容易。我可以验证我保存的每个实体,但无法验证其关联实体 我可以验证我保存的每个实体,但我无法验证其有效性 关联实体 当然,您可以对与主实体关联的实体执行任何操作,如果:Doctrine orm 如何在实体上级联用户定义的操作?,doctrine-orm,Doctrine Orm,我试图找出一种方法,在与一个实体关联的所有实体上级联一个操作。例如,如果我有一个用户,一个用户有实体,而这些实体有实体,我想对每个实体执行一个操作。具体来说,我希望对树中的每个实体执行验证 我如何实现像“getAssociatedEntities()”这样的东西: 我意识到我可以使用生命周期回调来执行验证。然而,设置验证注释使事情变得更加容易。我可以验证我保存的每个实体,但无法验证其关联实体 我可以验证我保存的每个实体,但我无法验证其有效性 关联实体 当然,您可以对与主实体关联的实体执行任何操作
cascade={“all”}
添加到@ManyToOne
定义中(必需!)@HasLifecycleCallbacks
针对要执行操作的每个子实体,并标记方法@PrePersist
或@postersist
图像
实体中的图像文件,同时删除包含图像
实体的任何实体:
这里我有一个livecycle回调:
/**
* An image.
*
* @ORM\Entity
* @ORM\Table(name="images")
* @ORM\HasLifecycleCallbacks
*/
class ImageEntity extends AbstractEntity
{
/**
* @ORM\PreRemove
*/
public function preRemoveDeleteFile()
{
// remoce file
}
}
这里我有一个包含图像的实体(,其中定义了级联操作):
我可以验证我保存的每个实体,但我无法验证其有效性
关联实体
当然,您可以对与主实体关联的实体执行任何操作,如果:
cascade={“all”}
添加到@ManyToOne
定义中(必需!)@HasLifecycleCallbacks
针对要执行操作的每个子实体,并标记方法@PrePersist
或@postersist
图像
实体中的图像文件,同时删除包含图像
实体的任何实体:
这里我有一个livecycle回调:
/**
* An image.
*
* @ORM\Entity
* @ORM\Table(name="images")
* @ORM\HasLifecycleCallbacks
*/
class ImageEntity extends AbstractEntity
{
/**
* @ORM\PreRemove
*/
public function preRemoveDeleteFile()
{
// remoce file
}
}
这里我有一个包含图像的实体(,其中定义了级联操作):
谢谢你的回复。不幸的是,你没有回答这个问题。我得出的结论是,没有一种方法可以对实体进行级联操作。最好的办法就是使用生命周期回调,我在问题中已经提到了这一点。回调的问题是,它们只在持久化、加载和删除等操作期间发生。如果你想在其他时间采取行动,那你就太倒霉了。然而,我现在认为这是好的。如果您不能使用生命周期回调,您可能不应该这样做:)谢谢您的回复。不幸的是,你没有回答这个问题。我得出的结论是,没有一种方法可以对实体进行级联操作。最好的办法就是使用生命周期回调,我在问题中已经提到了这一点。回调的问题是,它们只在持久化、加载和删除等操作期间发生。如果你想在其他时间采取行动,那你就太倒霉了。然而,我现在认为这是好的。如果您不能使用生命周期回调,那么您可能不应该这样做:)
/**
* A competency group name.
*
* @ORM\Entity
* @ORM\Table(name="product_meta_image_cover")
*/
class ProductMetaImageCoverEntity extends AbstractEntity
{
/**
* @var \ModuleModel\Entity\ImageEntity
* @ORM\OneToOne(targetEntity="ModuleModel\Entity\ImageEntity", cascade={"all"}, orphanRemoval=true)
* @ORM\JoinColumn(onDelete="CASCADE")
*/
protected $image;
}