PHP原则:生成问题?
我正在从Mysql数据库生成模型。它正确地生成了一个外键集合,但不是反过来这是“故意的”,还是我做错了什么? 伪代码警报PHP原则:生成问题?,php,doctrine,Php,Doctrine,我正在从Mysql数据库生成模型。它正确地生成了一个外键集合,但不是反过来这是“故意的”,还是我做错了什么? 伪代码警报 User: UserId pk LocationId fk //User location Location LocationId pk UserId fk //Location owner 生成的代码: class User() { hasMany('Location') //for locations owned by
User:
UserId pk
LocationId fk //User location
Location
LocationId pk
UserId fk //Location owner
生成的代码:
class User() {
hasMany('Location') //for locations owned by the user
//BUT NOT THIS ONE:
//hasOne('Location_1') //for current location of user
}
class Location() {
hasMany('User') //for users which are on that location
//AND NOT THIS ONE
//hasOne('User_1') //for location owner
}
您需要定义一个关联表。您的伪代码具有误导性——在多对多关系中,用户或位置类中不使用外键,而是在关联类中使用外键
参见第76页。否,代码正确。这不需要关联类,它需要一对多关系两次。用户->位置ID会在用户位置更改时更新。插入位置时,会将用户指定为其所有者。对不起,我误解了您的问题。只是一个猜测,但也许你应该明确定义owningSide?我真的错过了一些东西。请纠正我,但是:假设User.LocationId链接到Location.Id的地方有一个外键关系。这意味着条令将生成Location->hasMany('User')。但这难道不意味着还应该生成一个用户->hasOne('Location')吗?我不指望会这样,因为手册上说:“从现有数据库生成只是为了方便开始。从数据库生成后,您必须调整它,并根据需要清理。”