4
我在帳戶和用戶之間有一對多的關係。我正在使用奏鳴曲管理員的CRUD。據我所知,它使用Symfony表單來完成工作。我嘗試添加一個字段是這樣的:sonata_type_model/symfony形式一對多關係不保存
->add('users', 'entity', array(
'class' => 'AcmeDemoBundle:User',
'required' => true,
'multiple' => true,
'expanded' => true
));
我也試圖與sonata_type_model
->add('users', 'sonata_type_model', array(
'class' => 'AcmeDemoBundle:User',
'required' => true,
'multiple' => true,
'expanded' => true
));
的問題是什麼(相關關係),當該帳戶被編輯被保存(當我編輯用戶的一切都得到更新)。我知道我必須更新擁有方(用戶端),但我沒有成功,因爲「public function addUser($ user)」沒有被調用,所以我不能添加像「$ user-> setAccount($ this )「的功能。
我的實體是這樣的:
class Account
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="Acme\DemoBundle\User", mappedBy="account", cascade={"persist", "remove"})
*/
protected $users;
/**
* Add users
*
* @param Acme\DemoBundle\Entity\User $user
* @return Account
*/
public function addUser(\Acme\DemoBundle\Entity\User $user)
{
$user->setAccount($this);
$this->users[] = $user;
return $this;
}
/**
* Remove users
*
* @param Acme\DemoBundle\Entity\User $user
*/
public function removeUser(\Acme\DemoBundle\Entity\User $user)
{
$user->setAccount(null);
$this->users->removeElement($user);
}
/**
* Get users
*
* @return Doctrine\Common\Collections\Collection
*/
public function getUsers()
{
return $this->users;
}
}
。之後,我加入by_reference =>虛假帳戶setter方法被調用,而擁有方可以更新
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Acme\DemoBundle\Account", inversedBy="users")
*/
protected $account;
/**
* Set account
*
* @param Acme\DemoBundle\Entity\Account $account
* @return User
*/
public function setAccount(\Acme\DemoBundle\Entity\Account $account = null)
{
$this->account = $account;
return $this;
}
/**
* Get account
*
* @return Acme\DemoBundle\Entity\Account
*/
public function getAccount()
{
return $this->account;
}
}
你先生是慈悲的天使被送到我的死牀上! 20多個小時的時間裏,我一直在爲如何解決這個看似簡單的任務而奮鬥和尋找哭泣!直到這一刻,我錯過了這是調用我的添加功能!非常感謝你在別人如此痛苦失敗的情況下取得成功。順便說一句,索納塔文件是地獄黑暗領主的產物!再次感謝 – Zjoia