エンティティのフォームを (ソナタ管理者で) 送信するとき、同じエンティティの別のエンティティからフィールドを変更する必要があります (いくつかの統計のために) が、その方法がわかりません。
通常のフィールド(タイトル...)を持つクラスと、別のエンティティ「組織」とのリンクがあるとしましょう:
/**
* 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);
}
それもうまくいきません。
私は何をすべきか?