No you can't, to have ManyToMany
association and additional column in your junction table you need to rewrite your mapping as to have a junction entity between your user and group entity as below
For user your mapping will be like
OneToMany
------------>
User UserHasGroups
<------------
ManyToOne
Same for group entity
OneToMany
----------->
Group UserHasGroups
<-----------
ManyToOne
Now you can set your entities as
User Entity
/**
* User
* @ORMTable(name="user_table_name")
* @ORMEntity
*/
class User
{
/**
* @ORMOneToMany(targetEntity="NameSpaceYourBundleEntityUserHasGroups", mappedBy="users",cascade={"persist","remove"} )
*/
protected $hasGroups;
}
Group Entity
/**
* Group
* @ORMTable(name="group_table_name")
* @ORMEntity
*/
class Group
{
/**
* @ORMOneToMany(targetEntity="NameSpaceYourBundleEntityUserHasGroups", mappedBy="groups",cascade={"persist","remove"} )
*/
protected $hasUsers;
}
UserHasGroups Entity
/**
* UserHasGroups
* @ORMTable(name="user_groups_table_name")
* @ORMEntity
*/
class UserHasGroups
{
/**
* @var integer
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORMManyToOne(targetEntity="NameSpaceYourBundleEntityGroup", cascade={"persist"}, fetch="LAZY")
* @ORMJoinColumn(name="group_id", referencedColumnName="id")
*/
protected $groups;
/**
* @ORMManyToOne(targetEntity="NameSpaceYourBundleEntityUser", cascade={"persist","remove"} ,inversedBy="medias", fetch="LAZY" )
* @ORMJoinColumn(name="user_id", referencedColumnName="id",nullable=true)
*/
protected $users;
/**
* @var DateTime
* @ORMColumn(name="added_on", type="datetime")
*/
protected $addedOn;
public function __construct()
{
$this->addedOn= new DateTime('now');
}
}
Now you have mapped your entities you can have your UserHasGroups
entity use repository method by provide user and group values like findBy,findAll
etc or if you have user object then you can directly get the UserHasGroups
object which contains the collection of associations for that user
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…