Php 定义公共连接表的关系
我有3个表-寄存器、项目和项目套件 和一个连接表-registers\u items Structure-register\u id、item\u id、item\u kit\u id、其他额外列item\u id和item\u kit\u id引用各自的表,可以为空 由于它们都有共同的额外列,所以我决定保留一个共同的连接表。RegistersTable.php中定义的关系包括:Php 定义公共连接表的关系,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我有3个表-寄存器、项目和项目套件 和一个连接表-registers\u items Structure-register\u id、item\u id、item\u kit\u id、其他额外列item\u id和item\u kit\u id引用各自的表,可以为空 由于它们都有共同的额外列,所以我决定保留一个共同的连接表。RegistersTable.php中定义的关系包括: $this->belongsToMany('ItemKits', [ 'foreignKey' =&g
$this->belongsToMany('ItemKits', [
'foreignKey' => 'register_id',
'targetForeignKey' => 'item_kit_id',
'joinTable' => 'registers_items'
]);
$this->belongsToMany('Items', [
'foreignKey' => 'register_id',
'targetForeignKey' => 'item_id',
'joinTable' => 'registers_items'
]);
从注册表页上的表单中,我传递以下post数据:
[items] => Array
(
[0] => Array
(
[id] => 1
[_joinData] => Array
(
// All the extra columns data
)
)
// ....
)
[item_kits] => Array
(
[3] => Array
(
[id] => 2
[_joinData] => Array
(
// All the extra columns data
)
)
// ....
)
它只保存registers\u items表中的项目。我希望他们俩都能得救。我错过了什么
在进一步调试之后,我发现关系定义没有问题。问题是我对两个连接使用单个表。所以,第二个关系覆盖第一个关系,第一个关系的数据不会保存在表中。我甚至尝试了“通过”选项,但结果相同。有什么想法吗?我不想为这两个关联使用一个公共联接表,这不利于数据库规范化,正如您已经发现的那样,这会使处理应用程序代码时的事情更加复杂