gpt4 book ai didi

forms - Symfony2 Doctrine2 多对多形式不保存实体

转载 作者:行者123 更新时间:2023-12-02 11:23:02 25 4
gpt4 key购买 nike

我在处理多对多关系时遇到了一些麻烦。我有用户 Assets 。我希望能够将用户分配给 Assets 页面上的 Assets 。

下面的代码在创建/编辑 Assets 时显示用户列表,但是对用户复选框所做的更改不会保存,而其余数据会保留。

如果我通过 mysql 客户端向 users_assets 添加条目,这些更改将显示在 Assets 列表中。

用户

class User extends BaseUser
{
/**
* @ORM\ManyToMany(targetEntity="Asset", inversedBy="users")
*/
private $assets;
}

Assets

class Asset
{
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="assets")
*/
private $users;
}

Assets 类型

public function buildForm(FormBuilderInterface $builder, array $options)
{
$form = $builder
->add('users', null, array(
'expanded' => true,
'multiple' => true
))
->getForm();

return $form;
}

最佳答案

出于某种原因,我必须切换学说映射才能使其正常工作:

Asset:
/**
* @ORM\ManyToMany(targetEntity="Adaptive\UserBundle\Entity\User", inversedBy="assets")
* @ORM\JoinTable(name="user_assets")
*/
private $users;

User:
/**
* @ORM\ManyToMany(targetEntity="Splash\SiteBundle\Entity\Asset", mappedBy="users")
*/
private $assets;

现在,当我保存 Assets 时,它会保存关联的用户。我不需要将 builder->add 定义为实体或集合。我只是将其传递为 null,然后它使用映射信息来填充实体信息:

AssetType:
->add('users', null, array('expanded' => "true", "multiple" => "true"))

不太清楚为什么我需要有关 Assets 与用户的 inversedBy 和 JoinTable 信息,但它现在似乎可以正常工作!

感谢您的建议!!!

关于forms - Symfony2 Doctrine2 多对多形式不保存实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9102063/

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