在条令(Symfony2)中的多个联接表中有附加列 处境

在条令(Symfony2)中的多个联接表中有附加列 处境,symfony,doctrine-orm,many-to-many,Symfony,Doctrine Orm,Many To Many,我有两个实体用户和组,它们的关系是ManyToMany。关系被创建为单独的表(称为user\u-group),有两列user\u-id和group\u-id 问题 我想在表用户组中再添加一个字段addedOn TIMESTAMP DEFAULT CURRENT\u TIMESTAMP。我不在乎doctrine不会看到这个专栏,我可以在需要的时候通过SQL选择它 问题: 这可以通过条令配置来实现吗?如果是,如何进行? 我知道我可以在DB中添加列,但每次生成migration diff时,都会有SQ

我有两个实体用户和组,它们的关系是ManyToMany。关系被创建为单独的表(称为
user\u-group
),有两列
user\u-id
group\u-id

问题 我想在表
用户组
中再添加一个字段
addedOn TIMESTAMP DEFAULT CURRENT\u TIMESTAMP
。我不在乎doctrine不会看到这个专栏,我可以在需要的时候通过SQL选择它

问题: 这可以通过条令配置来实现吗?如果是,如何进行? 我知道我可以在DB中添加列,但每次生成migration diff时,都会有SQL语句删除此列

相关信息 应用程序:Symfony 2.5,条令2.4

关系在配置中定义为User.php:

/**
 * @ORM\ManyToMany(targetEntity="RAZ\UserBundle\Entity\Group")
 * @ORM\JoinTable(name="user_group",
 *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
 * )
 */
protected $groups;

不,您不能,要在连接表中有
manytomy
关联和附加列,您需要重写映射,以便在用户和组实体之间有一个连接实体,如下所示

对于用户,您的映射将如下所示

        OneToMany
      ------------>
User          UserHasGroups
      <------------
        ManyToOne
集团实体 用户组实体 现在您已经映射了您的实体,您可以通过提供用户和组值,如
findBy,让您的
UserHasGroups
实体使用存储库方法,findAll
etc,或者如果您有用户对象,那么您可以直接获得
UserHasGroups
对象,该对象包含该用户的关联集合

,如果附加列是“有序的”(以便按顺序进行某种排序)-是否有机会根据默认值进行订购,例如,在本附加栏的帮助下对组进行订购?
        OneToMany
       ----------->
Group          UserHasGroups
       <-----------
        ManyToOne
/**
 * User
 * @ORM\Table(name="user_table_name")
 * @ORM\Entity
 */
class User
{
    /**
     * @ORM\OneToMany(targetEntity="NameSpace\YourBundle\Entity\UserHasGroups", mappedBy="users",cascade={"persist","remove"} )
     */
    protected $hasGroups;

}
/**
 * Group
 * @ORM\Table(name="group_table_name")
 * @ORM\Entity
 */
class Group 
{
    /**
     * @ORM\OneToMany(targetEntity="NameSpace\YourBundle\Entity\UserHasGroups", mappedBy="groups",cascade={"persist","remove"} )
     */
    protected $hasUsers;

}
/**
 * UserHasGroups
 * @ORM\Table(name="user_groups_table_name")
 * @ORM\Entity
 */
class UserHasGroups
{

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="NameSpace\YourBundle\Entity\Group", cascade={"persist"}, fetch="LAZY")
     * @ORM\JoinColumn(name="group_id", referencedColumnName="id")
     */
    protected $groups;

    /**
     * @ORM\ManyToOne(targetEntity="NameSpace\YourBundle\Entity\User", cascade={"persist","remove"} ,inversedBy="medias", fetch="LAZY" )
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id",nullable=true)
     */
    protected $users;


    /**
     * @var \DateTime
     * @ORM\Column(name="added_on", type="datetime")
     */
    protected $addedOn;

    public function __construct()
    {
        $this->addedOn= new \DateTime('now');
    }

}