多对多,在Symfony中具有属性和两个复选框列表


Many to Many with attribute and two checkbox lists in Symfony

我有两个实体,用户和语言,它们之间的关系是多对多,它们之间有属性。我想制作一个带有两个复选框列表的表单,显示相同的值,但第一个列表为额外属性提供值"好",第二个列表给出"坏"。

是否可以使用Symfony的表单构建器来做到这一点?

我的用户类:

class User {
    /**
     * @ORM'Column(name="id", type="integer")
     * @ORM'Id
     * @ORM'GeneratedValue(strategy="AUTO")
     */
     private $id;
     /**
     * @ORM'OneToMany(targetEntity="Lift'TalentBundle'Entity'UserLanguage",    mappedBy="user", cascade={"persist"})
     */
    private $languages;

我的语言课:

class Language
{
    /**
     * @var integer
     *
     * @ORM'Column(name="id", type="integer")
     * @ORM'Id
     * @ORM'GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @var string
     *
     * @ORM'Column(name="name", type="string", length=255)
     */
    private $name;

我之间的关系类:

类用户语言 {

/**
 * @var integer
 *
 * @ORM'Column(name="id", type="integer")
 * @ORM'Id
 * @ORM'GeneratedValue(strategy="AUTO")
 */
private $id;
/**
 * @var integer
 *
 * @ORM'Column(name="level", type="integer")
 */
private $level;
/**
 * @ORM'ManyToOne(targetEntity="Lift'TalentBundle'Entity'User", inversedBy="languages")
 * @ORM'JoinColumn(nullable=false)
 */
private $user;
/**
 * @ORM'ManyToOne(targetEntity="Lift'TalentBundle'Entity'Language")
 * @ORM'JoinColumn(nullable=false)
 */
private $language;

$level具有 int 值(1 表示好,2 表示坏)

我尝试创建这样的表单:

$builder->add('languages','entity',[
                'class' =>'LiftTalentBundle:UserLanguage',
                'multiple' => true,
                'expanded' => true,
            ])
        ;

但它并非不起作用,我不知道如何构建两个列表,在我的 UserLanguage 表中自动分配$level值

在这里找到解决方案:http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html

使用用户实体中的新功能,我可以根据需要构建我的 2 个列表