Php 未传递Symfony实体值

Php 未传递Symfony实体值,php,symfony,Php,Symfony,我创建了一个实体工作组,还创建了一个实体用户,以这种方式进行注释 class WorkGroup{ /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /* * @ORM\Column(type="string", length=100) * @Assert\No

我创建了一个实体
工作组
,还创建了一个实体
用户
,以这种方式进行注释

class WorkGroup{

    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /*  
     * @ORM\Column(type="string", length=100)
     * @Assert\NotBlank()
     */
    private $sworkgroup;
     /**
     * @ORM\OneToMany(targetEntity="user", mappedBy="workgroup",cascade={"persist"})
     * @ORM\OrderBy({"name" = "ASC"})
     */
    private $users;
根据
用户
实体:

/**
 * @ORM\ManyToOne(targetEntity="WorkGroup", inversedBy="users")
 * @ORM\JoinColumn(name="sgid", referencedColumnName="id")
 */
private $workgroup;
在用户表单中,我嵌入了一个
工作组
表单

$builder->add('workgroup', new WorkGroupType());
嵌入的工作组类型

$builder->add('sworkgroup', 'choice', array(
    'choices' => array(
    'KSI' => 'KSI',
    '3CIS' => '3CIS',),
    'choices_as_values' => true, 
)); 
提交表单时,
sworkgroup
字段为
NULL

我的问题是如何将值从表单传递到
sworkgroup

您要查找的是EntityType。您应该替换当前的
$builder->add('workgroup',new WorkGroupType())用户表单中的行,如下所示:

->add('environments', EntityType::class, [
    'multiple' => false,
    'expanded' => false,
    'class' => WorkGroup::class,
    'choice_label'  => 'sworkgroup'
 ])

然后您的选择字段将按预期工作

为什么字段被称为
sworkgroup
,实体字段被称为
workgroup
?Symfony如何理解这些项目是连接在一起的?