0

当我为一个实体提交表单(在奏鸣曲管理员中)时,我需要修改同一实体中另一个实体的字段(对于某些统计数据),但不知道该怎么做。

假设我有一个带有普通字段(标题...)的类以及与另一个实体“组织”的链接:

/**
* 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);
}

它也不起作用。

我应该怎么办?

4

0 回答 0