当我为一个实体提交表单(在奏鸣曲管理员中)时,我需要修改同一实体中另一个实体的字段(对于某些统计数据),但不知道该怎么做。
假设我有一个带有普通字段(标题...)的类以及与另一个实体“组织”的链接:
/**
* Event
*
* @ORM\Table(name="event")
* @ORM\Entity(repositoryClass="...")
* @ORM\HasLifecycleCallbacks
* @Assert\Callback(methods={"isFormValid"})
*/
class Event
{
private $title;
...
/**
* @ORM\ManyToMany(targetEntity="Organization", cascade={"persist"})
* @ORM\JoinTable(name="event_organization",
* joinColumns={@ORM\JoinColumn(name="event_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="organization_id", referencedColumnName="id")}
* )
**/
private $organizations;
}
要在提交事件期间修改组织中的字段,我会:
/**
* @ORM\PreUpdate
*/
public function preUpdate()
{
$organizations = $this->getOrganizations();
foreach($organizations as $orga) {
$orga->setTitle('test');
}
}
但这不起作用,我也尝试(出于测试目的)添加一个新实体:
/**
* @ORM\PreUpdate
*/
public function preUpdate()
{
$entity = new Organization();
$entity->setTitle('New');
$entity->setCode('123456');
$this->organizations->add($entity);
}
它也不起作用。
我应该怎么办?