我正在使用现有的数据库架构,并尝试设置两个具有多对多关系的Doctrine模型,as described in this document
从头开始创建表格时,我可以毫不费力地完成这项工作。但是,现有的连接表使用与Doctrine文档中描述的不同的命名约定。具体地
Table 1
--------------------------------------------------
table_1_id
....other columns....
Table 2
--------------------------------------------------
table_2_id
....other columns....
Join Table
--------------------------------------------------
fktable1_id
fktable_2_id
基本上,以前的开发人员使用fk
开始使用所有外键。
从我看过的例子和一些简短的代码试验看来,Doctrine 1.2 要求表明连接表使用与它加入的表相同的列名
我的假设是否正确?
如果是这样,Doctrine 2中的情况是否发生了变化?
- 醇>
如果上述任何一个的答案都是真的,那么如何配置模型以便所有列“排列”
答案 0 :(得分:1)
您只需设置本地和外国部分以匹配您的列名
Table1:
columns:
table_1_id: int
....
relations:
Table2:
foreignAlias: FromSecond
local: table_1_id
foreign: fktable1_id
refClass: JoinTable
Table2:
columns:
table_2_id: int
....
relations:
Table1:
foreignAlias: FromFirst
local: table_2_id
foreign: fktable2_id
refClass: JoinTable
JoinTable:
columns:
fktable1_id: int
fktable2_id: int
relations:
Table1:
Table2:
答案 1 :(得分:1)
看看关于N:M关系的at the docs。
当你看到
$this->hasColumn('user_id', 'integer', null, array(
'primary' => true
)
);
从文档中,您会看到由您在连接模型中命名列的方式取决于您。
由于您有现有数据库,为什么不通过Doctrine生成模型? API会向您显示所需的选项。我自己使用它,效果很好。有时你可能需要一些清理,如果你有一个完整的结构,但生成的文件是一个非常好的开始。