更新时间:2023-12-01 14:33:58
您需要通过以下方式打破 ManyToMany
与 OneToMany
和 ManyToOne
的关系引入一个名为 UserHasHouses
的连接实体,这样您就可以向连接表 user_house
You need to break your ManyToMany
relation to OneToMany
and ManyToOne
by introducing a junction entity called as UserHasHouses
, This way you could add multiple columns to your junction table user_house
/**
* User
* @ORMTable(name="user")
* @ORMEntity
*/
class User
{
/**
* @ORMOneToMany(targetEntity="NameSpaceYourBundleEntityUserHasHouses", mappedBy="users",cascade={"persist","remove"} )
*/
protected $hasHouses;
}
/**
* Group
* @ORMTable(name="house")
* @ORMEntity
*/
class House
{
/**
* @ORMOneToMany(targetEntity="NameSpaceYourBundleEntityUserHasHouses", mappedBy="houses",cascade={"persist","remove"} )
*/
protected $hasUsers;
}
/**
* UserHasHouses
* @ORMTable(name="user_house")
* @ORMEntity
*/
class UserHasHouses
{
/**
* @var integer
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORMManyToOne(targetEntity="NameSpaceYourBundleEntityHouse", cascade={"persist"}, fetch="LAZY")
* @ORMJoinColumn(name="house_id", referencedColumnName="id")
*/
protected $houses;
/**
* @ORMManyToOne(targetEntity="NameSpaceYourBundleEntityUser", cascade={"persist","remove"}, fetch="LAZY" )
* @ORMJoinColumn(name="user_id", referencedColumnName="id",nullable=true)
*/
protected $users;
/**
* @var DateTime
* @ORMColumn(name="created_at", type="datetime")
*/
protected $createdAt;
/**
* @var DateTime
* @ORMColumn(name="updated_at", type="datetime")
*/
protected $updatedAt;
//... add other properties
public function __construct()
{
$this->createdAt= new DateTime('now');
}
}