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