gpt4 book ai didi

symfony - sonata_type_model/symfony 形成一对多关系不保存

转载 作者:行者123 更新时间:2023-12-04 23:05:17 24 4
gpt4 key购买 nike

我在帐户和用户之间有一对多的关系。我正在为 CRUD 使用奏鸣曲管理员。据我所知,它使用 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;
}
}

.
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;
}
}

最佳答案

我的问题与此有关 https://github.com/symfony/symfony/issues/1540

在我添加 by_reference => false 之后调用帐户 setter 并且可以更新拥有方。

关于symfony - sonata_type_model/symfony 形成一对多关系不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13896789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com